2015-12-02 3 views
0

Я хочу спросить пользователя (используя Scanner), сколько раз он хочет, чтобы программа зациклилась. Мне нужно использовать оператор цикла do-while для этого, но всякий раз, когда я ввожу количество раз, когда я хочу, чтобы он зацикливал, он только вычитает его из значения, которое я вставляю и повторяю на эту сумму.Запрашивающий пользователь для H

Например, я вхожу в 4, программа повторяется 16 раз вместо 4 раз.

Вот моя программа:

System.out.println("Enter range"); 
int y = input.nextInt(); 
int x = 10; 
do { 
    System.out.print("value of x : " + x); 
    x++; 
    y++; 
    System.out.print("\n"); 
} while(y < 20); 

Где моя проблема?

+0

Вы пробовали распечатать значение y сразу после того, как вы выполнили 'int y = input.nextInt()', чтобы гарантировать, что его значение является ожидаемым? –

ответ

3

Изменить на while(y-- > 0) и не y++; внутри вашей петли. Так он станет:

System.out.println("Enter range"); 
int y = input.nextInt(); 
int x = 10; 
do { 
    System.out.print("value of x : " + x); 
    x++; 
    System.out.print("\n"); 
} while(y-- > 0); 
+1

Я добавлю исправление, чтобы сделать его более ясным – Idos

2

Ваша логика flawwed.

System.out.println("Enter range"); 
    int y = input.nextInt(); 
    int x = 10; 
    do{ 
    System.out.print("value of x : " + x); 
    x++; 
    y++; 
    System.out.print("\n"); 

    }while(y < 20 ); 
20 -> это петля, и каждый раз, когда вы увеличиваете с 1. Итак: 5,6,7,8, ..., 19, они будут все вернуться верно для у

Что вам нужно сделать, это сравнить счетчик инициализирован в 0 против у:

System.out.println("Enter range"); 
    int y = input.nextInt(); 
    int x = 10; 
    int count = 0; 
    do{ 
    System.out.print("value of x : " + x); 
    x++; 
    count++; 
    System.out.print("\n"); 

    }while(count < y ); 
5

при входе 4, то y становится 4 и цикл происходит до тех пор, пока не достигнет y20. Вот почему он исполняется 16 раз.

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

System.out.println("Enter range"); 
int y = input.nextInt(); 
int x = 10; 
do { 
    System.out.print("value of x : " + x); 
    x++; 
    y--; 
    System.out.print("\n"); 
} while(y > 0); 
+0

Спасибо, что он работал !! Мне очень жаль моих навыков программирования im near total beginner Как насчет того, если я хочу спросить пользователей на полпути в цикле, если я хочу, чтобы они продолжались или нет? Если они решат продолжить, программа продолжит цикл с начальным значением, которое они ввели, и если бы оно не прекратило цикл –

+0

Тогда вам придется иметь дело с 'String' (завершение цикла после того, как пользователь вводит« N »или что-то как это) –

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