строка, основанная на значении int - PullRequest
0 голосов
/ 10 ноября 2010

я хочу создать строку, основанную на значении типа int.

Я знаю, что могу создать переменную in, основанную на строчке, с помощью метода length()но было интересно, как сделать обратное.

например, у меня есть int 30, с этим int, я хотел бы создать строку из 30 точек ina на основе этого int и поместить ее в println

 {


     while (wordlegnth1 + wordlegnth2 < LINELENGTH)

     {

         dots++;
         wordlegnth1++;

     }

     System.out.println (word1 + dots + word2);
   }

на данный момент,Все, что println делает, это печатает 2 введенных слова, значение int основано на 2 введенных словах, например stack24overflow

, в основном то, что я хотел бы сделать, это изменить эти 24 с int на 24 точки (........................)

большое спасибо:)

Ответы [ 4 ]

2 голосов
/ 10 ноября 2010

Это особый случай, когда нужно повторить строку (или, если на то пошло, символ) несколько раз.

Тем не менее, существует простое решение: просто зациклить, чтобы вывести период dots количество раз, и распечатать его прямо на экране:

System.out.print(word1);
for(int d = 0; d < dots; d++){
    System.out.print(".");
}
System.out.println(word2);

В качестве альтернативы вы можете сначала сформировать строку (используя StringBuilder), а затем вывести ее:

StringBuilder sb = new StringBuilder(dots);
for(int d = 0; d < dots; d++){
    sb.append('.');
}
System.out.println(word1 + sb + word2);

Обратите внимание, что емкость StringBuilder инициализирована на dots.

1 голос
/ 10 ноября 2010
char[] letters = new char[ 30 ];
Arrays.fill(letters, '.');
String s = new String( letters );

System.out.println( s );
1 голос
/ 10 ноября 2010
int x - 30;
String dots = "";
for (int i = 0; i < x; i++){
     dots += "."; 
}
System.out.println(dots);

То, что я делаю, принимает значение int и повторяет его много раз. Оператор then += объединяет переменную dots. Так например "." + "." = ".."

1 голос
/ 10 ноября 2010

Есть много способов сделать это.

Вот дешевый и простой, хотя и не очень общий:

    static final String manyDots = "...........................................";
    ...
    dots = manyDots.substring(0, nosDots);  // if nosDots <= manyDots.length()

Вот более общая версия:

    char[] dotChars = new char[nosDots];
    Arrays.fill(dotChars, '.');    
    dots = new String(dotChars);

... что более или менее эквивалентно:

    StringBuilder sb = new StringBuilder(nosDots);
    for (int i = 0; i < nosDots; i++) {
        sb.append('.');
    }
    dots = sb.toString();

В классе Apache Commons StringUtils есть различные методы для такого рода вещей;например, leftPad, rightPad, center и repeat.Вызов StringUtils.repeat(".", nosDots) сделает именно то, что вы пытаетесь сделать.

Наконец, метод String.format() и классы Formatter делают подобные вещи на более высоком уровне.

...