2013-05-07 3 views
1

У меня проблема с моим кодом, где я не могу выйти из цикла. Я должен создать программу, в которой я вводил число, и затем меня попросят ввести нечетное значение, большее, чем первое значение. Например, я вводил 12, и для завершения программы я должен ввести 13, 15, 17 или любое нечетное число, большее 12. Если я ввожу число, даже он говорит мне попробовать еще раз. если я вводим нечетное число (3) ниже значения (12), он говорит мне, что мне нужно ввести значение больше 12.can not get do do While Loop

Я знаю, как логика этой программы работает, ну, я думаю, что я делаю это правильно. Хорошо, когда я запускаю программу и ввод 12, например, а затем введите следующее значение (15), он делает то, что должен делать. но я вводил 12, а затем вводил число ниже 12, например 3 или или четное число вместо нечетного значения, большего 12, он продолжает говорить мне, чтобы повторить попытку, даже я ввожу хорошее значение, например 15. В принципе цикл продолжает повторяться это снова и снова.

Я новичок в java, поэтому мне трудно понять, что я делаю неправильно. я исследовал while, но я не могу понять, как выйти из циклов.

это мой код.

import java.util.*; 

public class bonus2 { 
static Scanner input = new Scanner(System.in); 

public static void main(String[] args) { 
    System.out.print("Please Enter any number: "); 
    int theValue = getBigOddValue(0); 
    System.out.printf("The Value gotten was %d. \n", theValue); 
} 

private static int getBigOddValue(int value) { 
    value = input.nextInt(); 
    System.out.printf("Enter an odd number greater than " + value + ": "); 
    int cutoff = input.nextInt(); 
    int val = cutoff; 
    while (val % 2 == 0){ 
     System.out.printf("The number is even. Try again: "); 
     input.nextInt(); 
    } 
    while (val<value){ 
     System.out.printf("The number must be greater than " + value 
       + ". Try again: "); 
     input.nextInt(); 
    } 

    return cutoff; 
} 

SAMPLE RUNS (как должны выглядеть мои пробежки).

**Call (and return displayed):** 
theValue =getBigOddValue(14); 
System.out.printf("The value gottenwas %d.\n",theValue); 


**Machine-user interaction of above:** 
Enter an odd number greater than 14: 2 
The number is even. Try again: 28 
The number is even. Try again: 11 
The number must be greater than 14. Try again: 3 
The number must be greater than 14. Try again: 18 
The number is even. Try again: 9 
The number must be greater than 14. Try again: 19 
The value gotten was 19. 
+0

Если вы удалили свой код, вы сделали этот вопрос недействительным. Если безопасность важна для вас, сохранение чистоты и значимого веб-сайта является импортом для участников SO. Удалите свой вопрос. – Siddharth

+0

Я не могу, потому что он говорит, что у него уже есть ответы. – Guille

+0

Напишите на meta.stackoverflow.com. Они могут помочь. – Siddharth

ответ

4

Вам необходимо присвоить значение переменной input.nextInt().

while (val % 2 == 0){ 
    System.out.printf("The number is even. Try again: "); 
    val = input.nextInt(); 
} 
+2

В ** оба ** петли –

+1

OMG, это все. Вау. такие простые вещи. Спасибо, ребята, за вашу помощь.^_^Большое вам спасибо. – Guille

+0

@ThomasW - ok, поэтому теперь каждый раз, когда число больше, чем «значение» (18), даже даже четное, я получаю конечный результат как: Полученное значение равно 18. Если его 18 предполагается обнаружить как четное номер, но этого не происходит .. любые предложения? - Если вы можете запустить код и запустить Sample Run, это поможет вам понять, о чем я говорю. Как только я доберусь до той части, где мне нужно ввести 18, я ввожу 18, а затем он говорит мне. Значение получилось 18, вместо этого число равно Try gain: 9 и так далее, пока я не введу нечетное число (19). – Guille

0
private static int getBigOddValue(int value) { 
    value = input.nextInt(); 
    System.out.printf("Enter an odd number greater than " + value + ": "); 
    int cutoff = input.nextInt(); 
    int val = cutoff; 
    while (val % 2 == 0){ 
     System.out.printf("The number is even. Try again: "); 
     val = input.nextInt(); 
    } 
    while (val<value){ 
     System.out.printf("The number must be greater than " + value 
       + ". Try again: "); 
     val = input.nextInt(); 
    } 

    return val; 
} 

Вы не изменяя значение Валу, вот почему. И верните val, а не обрезайте.

+0

Да, спасибо вам большое. – Guille

+0

эй, нормально, поэтому теперь каждый раз, когда число больше, чем «значение», даже это ровно, я получаю окончательный вывод как: значение получилось 18. Если его 18 предполагается обнаружено как четное число, но этого не происходит .. любые предложения? – Guille