Как мне разработать цикл int, который начинается с 1 и заканчивается 0 (1,2,3,4,5,6,7,8,9,0) - PullRequest
11 голосов
/ 10 декабря 2010

Моя проблема заключается в использовании вложенных циклов for для создания этого вывода:

         |         |         |         |         |         |
123456789012345678901234567890123456789012345678901234567890

Я не могу найти лучший способ заменить int 10 на 0. Я пробовал несколькопути, но они бесполезны и не кажутся мне правильными.Я надеюсь, что моя проблема очевидна, это трудно объяснить.Может кто-нибудь направить меня в правильном направлении?

Я добился правильного результата, но что-то подсказывает мне, что есть лучший способ сделать это.Вот мой код:

int k = 0;  
for (int i=1; i<=6; i++){
   System.out.print("         |");
}
System.out.println();
for (int m=0; m<6; m++){
   for (int j=1; j<10; j++){
      System.out.print(j);
   }
   System.out.print(k);
}

Отлично!Модуло был ответом, который я искал.Я чувствую себя намного комфортнее с этим:

for (int i=1;i<=6;i++){
   System.out.print("         |");
}
System.out.println();
for (int m=0;m<6;m++){
   for (int j=1;j<=10;j++){
      System.out.print(j % 10);
   }
}

Ответы [ 8 ]

11 голосов
/ 10 декабря 2010

Используйте оператор по модулю% .Это дает вам остаток.Поэтому, начиная цикл с 1, когда 1 делится на 10, остаток равен 1 .Когда 2 делится на 10, остаток равен 2 , и т. Д. Когда 10 делится на 10, вывод равен 0 .

for(int i = 1; i <= 10; i ++) {
      System.out.println(i % 10);
}
10 голосов
/ 10 декабря 2010

Требуется оператор мод (%).

10 % 10 = 0
11 % 10 = 1

Он вычисляет остаток после деления.

8 голосов
/ 10 декабря 2010

Почему вы не можете просто сгенерировать это:

012345678901234567890123456789012345678901234567890123456789

А потом взять персонажа спереди и воткнуть в конец?

3 голосов
/ 10 декабря 2010

Есть много способов. Самое простое это, наверное:

for (int i = 1; i <= 10; i++) {
   System.out.println(i % 10);
}

Если у вас 2 петли, вы можете использовать этот факт:

for (int i = 0; i < 5; i++) {
   for (int j = 1; j <= 9; j++) {
       System.out.print(j);
   }
   System.out.print(0);
}
2 голосов
/ 10 декабря 2010

Если это представляет собой вид шаблона , тогда, хотя не просто определить шаблон и затем вывести результат на экран (или сделать что угодно), это:

printPattern("         |", 6);
printPattern("1234567890", 6);

public void printPattern(string pattern, int max)
{   
    int i = 0; 
    while (++i <= max)
        System.out.print(pattern);
    System.out.println();
}
0 голосов
/ 10 декабря 2010

Вот немодульное решение:

$x = 1;
while(1){
  if($x>9){
     $x=0;
  }
print $x;
$x++;
}

Да, да, я знаю, что это дешево. Это будет работать, хотя. ;)

0 голосов
/ 10 декабря 2010
for (int i=1; i<100; i++)
    System.out.println(i%10);
0 голосов
/ 10 декабря 2010

Вы можете попробовать использовать по модулю:

i = i % 10
...