символ повторения Java

Я - новичок 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();
 }
}

Спасибо

8
задан Yacoby 21 February 2010 в 04:53
поделиться

4 ответа

Если у вас действительно есть требование создать строку, содержащую X восклицательных знаков, то вот способ сделать это без повторной конкатенации:

char[] exmarks = new char[aantal];
Arrays.fill(exmarks, '!');
String exmarksString = new String(exmarks);
22
ответ дан 3 November 2019 в 13:09
поделиться

Ваша программа не работает, потому что String.concat() не изменяет строку, а возвращает новую строку. Например, "a".concat("b") - это "ab". Поэтому следует написать output = output.concat("!") вместо output.concat("!").

Однако это будет очень неэффективно, поскольку построение строки из n восклицательных знаков займет O(n^2) времени (поищите "big oh notation" в google или wikipedia, см. также алгоритм Шлемиля-художника).

Посмотрите документацию к классу StringBuilder и используйте его. Он был разработан для построения строк из частей.

4
ответ дан 3 November 2019 в 13:09
поделиться

Похоже, вы очень близки, Том.

Во-первых, обычный способ создания 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);
4
ответ дан 3 November 2019 в 13:09
поделиться

Ваша программа должна иметь такую ​​структуру:

read number x 
repeat this x times  
  print '!'

Насколько я могу судить, в инструкции нет ничего, что требовало бы от вас создания строки.

3
ответ дан 3 November 2019 в 13:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: