повторяющийся символ java - PullRequest
8 голосов
/ 21 февраля 2010

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

Спасибо

Ответы [ 4 ]

22 голосов
/ 21 февраля 2010

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

char[] exmarks = new char[aantal];
Arrays.fill(exmarks, '!');
String exmarksString = new String(exmarks);
4 голосов
/ 21 февраля 2010

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

Во-первых, нормальный способ создания 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 голосов
/ 21 февраля 2010

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

Тем не менее, это будет очень неэффективно, потому что создание строки из n восклицательных знаков займет O (n ^ 2) времени (см. «Big ohtation» в Google или Википедии, см. Также Алгоритм Schlemiel the Painter) ).

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

3 голосов
/ 21 февраля 2010

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

read number x 
repeat this x times  
  print '!'

Нет ничего в утверждении, требующем, чтобы вы действительно строили строку, насколько я могу судить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...