2017-02-16 13 views
0

Я пытаюсь получить одну строку для вывода и выглядеть примерно так:Добавить пробел между номерами, используя циклы?

1 2 3 4 5  6  7  8  9 

Добавление другого пространства каждый раз, когда число увеличивается. Мне нужно сделать это, используя для циклов, с предпочтительным вложенным циклом. Вот мой код до сих пор (по пробегу не печатает даже при вызове метода.)

public static void outputNine() 
{ 
    for(int x=1; x<=9; x++) 
    { 
     for(char space= ' '; space<=9; space++) 
     { 
      System.out.print(x + space); 
     } 
    } 
} 

Я знаю, что я делаю что-то неправильно, но я довольно новыми для Java, так что я не совершенно уверенный какой. Спасибо за любую помощь.

+3

'для (полукокса пространства = '«; пространство <= 9; пространство ++) 'никогда не будет выполняться:' пробел <= 9' сразу ложно, потому что ' '' == 32'. –

+0

@shmosel Я попробовал ваше предложение и получил выход, но получил это «333435363738394041» – DPabst

ответ

0

Ваша петля использует значение ASCII ' ', которое не то, что вы хотите. Вам просто нужно подсчитать до текущего x. Замените свою внутреннюю петлю следующим образом:

System.out.print(x); 
for (int s = 0; s < x; s++) { 
    System.out.print(" "); 
} 
0

Прямо сейчас вы пытаетесь увеличить символ, что не имеет смысла. Вы хотите, чтобы space был числом, эквивалентным количеству необходимых вам пространств.

2

Вы можете инициализировать space только один раз, а затем напечатать цифры, и для каждого номера, печать пространства:

char space = ' '; 
for(int x=1; x<=9; x++) 
{ 
    System.out.print(x); 
    for(int i = 0 ; i < x ; i++) 
    { 
     System.out.print(space); 
    } 
} 
0

Вам нужно всего лишь один цикл.

См: Simple way to repeat a String in java

for (int i = 1; i <= 9; i++) { 
    System.out.printf("%d%s", i, new String(new char[i]).replace('\0', ' ')); 
} 

Выход

1 2 3 4 5 6 7 8 9

Или более оптимально,

int n = 9; 
char[] spaces =new char[n]; 
Arrays.fill(spaces, ' '); 
PrintWriter out = new PrintWriter(System.out); 

for (int i = 1; i <= n; i++) { 
    out.print(i); 
    out.write(spaces, 0, i); 
} 
out.flush(); 
+0

Было бы лучше, если бы вы построили строку один раз, настолько большой, насколько вам это нужно. Затем вы можете использовать 'print (String, int, int)' overload для печати части строки. –

+2

Обратите внимание на количество вызовов конструктора в байт-коде. –

+0

Я имел в виду ['PrintWriter.write (char [], int, int)'] (https://docs.oracle.com/javase/7/docs/api/java/io/PrintWriter.html#write (char [ ],% 20int,% 20int)). Всегда забывайте, где это. –

0

Рассмотрим линию, как состоит из 9 частей одной и той же структуры: x-1 пространства затем x, где x переход от 1 до 9.

/* 
0 space + "1" 
1 space + "2" 
2 spaces + "3" 
... 
*/ 

int n = 9; 
for (int x = 1; x <= n; x++) { 
    // Output x - 1 spaces 
    for (int i = 0; i < x - 1; i++) System.out.append(' '); 
    // Followed by x 
    System.out.print(x); 
} 

Одна хорошая вещь об этом подходе вы не имеете завершающие пробелы.

0

Пожалуйста, найти свое простое решение :)

public class Test { 

    public static void main(String args[]) { 
     for (int i = 1; i <= 9; i++) { 
      for (int j = 2; j <= i; j++) { 
       System.out.print(" "); 
      } 
      System.out.print(i); 
     } 

    } 

}