Я - новичок Java, имейте это в виду. Я должен сделать программу, которая читает число и затем отображает ту сумму восклицательного знака"!".
Это - то, что я имею:
import java.util.Scanner;
import java.io.PrintStream;
class E_HerhaalKarakter1 {
PrintStream out;
E_HerhaalKarakter1 () {
out = new PrintStream(System.out);
}
String printUitroeptekens (int aantal) {
String output = "!"
for (int i = 0; i <= aantal; i++) {
output.concat("!");
}
return output;
}
void start () {
Scanner in = new Scanner(System.in);
out.printf("Hoeveel uitroeptekens wilt u weergeven?\n");
if(in.hasNext()) {
out.printf("baldbla");
printUitroeptekens(in.nextInt());
out.printf("%s",output);
}
}
public static void main (String[] argv) {
new E_HerhaalKarakter1().start();
}
}
Спасибо
Если у вас действительно есть требование создать строку, содержащую X восклицательных знаков, то вот способ сделать это без повторной конкатенации:
char[] exmarks = new char[aantal];
Arrays.fill(exmarks, '!');
String exmarksString = new String(exmarks);
Ваша программа не работает, потому что String.concat() не изменяет строку, а возвращает новую строку. Например, "a".concat("b") - это "ab". Поэтому следует написать output = output.concat("!")
вместо output.concat("!")
.
Однако это будет очень неэффективно, поскольку построение строки из n восклицательных знаков займет O(n^2) времени (поищите "big oh notation" в google или wikipedia, см. также алгоритм Шлемиля-художника).
Посмотрите документацию к классу StringBuilder
и используйте его. Он был разработан для построения строк из частей.
Похоже, вы очень близки, Том.
Во-первых, обычный способ создания String
в Java - это класс StringBuilder
, вот так:
StringBuilder buf = new StringBuilder(aantal);
while (aantal-- > 0)
buf.append('!');
return buf.toString();
Затем вам нужно объявить переменную с именем output
в области видимости метода start()
и присвоить результат метода printUitroeptekens()
этой переменной, вот так:
String output = printUitroeptekens(in.nextInt());
out.printf("%s%n", output);
Ваша программа должна иметь такую структуру:
read number x
repeat this x times
print '!'
Насколько я могу судить, в инструкции нет ничего, что требовало бы от вас создания строки.