2016-10-27 2 views
-4

Это цикл.Невозможно найти способ записи последовательности 1,2,3,4, .., K, 1,2,3, ..., K, где K - введенный пользователем номер

for(m=0; m<10; m++){ 
     for (i=0; i<=K; i++) { 
      A[i] = i; 
    } 
    } 

И это код печати.

System.out.println("A:"); 
    for (i=0; i<20; i++) { 
     System.out.printf("%.1s\t", A[i]); 
     if (i==9) System.out.println(); 
    } 

Если пользователь вводит K в 3, то результат будет:

A: 
0 1 2 3 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 

Но это должно быть как

A: 
0 1 2 3 0 1 2 3 0 1 
2 3 0 1 2 3 0 1 2 3 
+1

Подсказка: используйте оператор '%' по модулю. – QBrute

ответ

0
System.out.println("A:"); 
    for (i=0; i<20; i++) { 
     System.out.printf("%.1s\t", A[i]%(K+1)); 
     if (i==9) 
      System.out.println(); 
    } 
0

Ваши петли неправильно. Вы только изменили первые элементы K + 1 массива.

0

Индекс «i» находится внутри внутреннего цикла, поэтому он начинается с 0 для ech-итерации «m». Вы перезапись первых элементов K массива

Может быть, вы хотите хотите написать такой код:

ind = 0; 
for(m=0; m<10; m++) 
{ 
     for (i=0; i<=K; i++) 
     { 
      A[indx] = i; 
      indx++; 
     } 
} 
+0

minor typo: это должно быть 'indx' not' ind' :) – GameDroids

0

Порядок ваших чисел в порядке, проблема является массивом A или лучше, индекс, когда вы добавляете свои номера в этот массив.

for (i=0; i<=K; i++) 
    A[i] = i; 

здесь вы Переберите A начиная с A[0] и заканчивая A[K]. И вы делаете это в 10 раз:

for(m=0; m<10; m++) 

Итак: либо вы используете оператор % (modulo), как QBrute предложил в своем комментарии или найти себе более «глобальный» индекс. Например

int j = 0; 
for(int m = 0; m < 10; m++){ 
    for(i = 0; i <= K; i++){ 
     A[j++] = i; 
    } 
} 

В этом случае вы должны убедиться, что ваш массив нужного размера: Вы хотите в 10 раз число от 0 до K, так что ваш A будет int[(K+1)*10], в то время как +1 это потому, что вы петля из i=0 в i=K (что делает K+1 итераций)

+0

Если я могу дать вам несколько советов: переменные и методы всегда должны начинаться с небольшой буквы ('a' not' A' и 'k' not' K '). Затем дайте этим переменным некоторые полезные имена, такие как 'userInput' вместо' k', чтобы вы знали, для чего они используются. И наконец: всегда используйте фигурные скобки '{}' в 'if' -операциях или' циклах'. Если вы оставите эти фигурные скобки, может быть удобнее и быстрее писать, но это лишний источник ошибок. Поверьте мне :) его проще – GameDroids

0

Код

int userEnteredVal = 3; 

    Integer[] smallArr = new Integer[userEnteredVal + 1]; 
    Integer[] outpuptArr = new Integer[20]; 

    for (int i = 0; i <= userEnteredVal; i++) { 
     smallArr[i] = i; 
    } 

    for (int index = 0; index < 20; index += (userEnteredVal + 1)) { 
     System.arraycopy(smallArr, 0, outpuptArr, index, smallArr.length); 
    } 

    for (int i = 0; i < outpuptArr.length; i++) { 
     System.out.printf(outpuptArr[i] + " "); 

     if (i == 9) { 
      System.out.printf("\n"); 
     } 
    } 

Выходной

0 1 2 3 0 1 2 3 0 1 
2 3 0 1 2 3 0 1 2 3 

надеюсь, что это поможет.

Смежные вопросы