2015-02-10 2 views
0

Мне нужен код, который говорит вам ввести два числа, пока вы не введете два числа, которые даже кратные. Я использую оператор цикла для этой задачи, и когда я запускаю свой код, и я набираю два числа, которые даже не кратные, он говорит: «Пожалуйста, введите даже кратные». Пожалуйста, помогите мне. Thx заранее. Вот мой код.Как я могу остановить этот оператор цикла

public class looper { 
     public static void main (String[] args) { 

    float firstNumber = 0; 
    float secondNumber = 0; 
    float finalNumber = 0; 

    java.util.Scanner input=new java.util.Scanner(System.in); 

    System.out.println("Enter your first number."); 
     firstNumber = input.nextFloat(); 
     input.nextLine(); 


     System.out.println("Enter your second number."); 
     secondNumber = input.nextFloat(); 

     finalNumber = firstNumber % secondNumber; 

     System.out.println(secondNumber + " and " + firstNumber + " are even multiples."); 
    while(finalNumber != 0) { 

     System.out.println("Please enter even multiples."); 


     } 
     } 
    } 
+0

Я немного смущен относительно вашей конечной цели. Я вижу, как исправить цикл, но что вы на самом деле хотите совершить с 'finalNumber' - вы хотите, чтобы он продолжал вычислять так же, как и вне цикла? – Makoto

+0

, если последнее число не равно нулю, я хочу, чтобы код попросил пользователя ввести его номера. Если конечное число равно 0, я хочу, чтобы программа завершилась. – user4289755

ответ

0

Вы должны установить значение finalNumber таким образом, что она будет удовлетворять условию завершающего для вашего while цикла. Вы, наверное, хотели сделать что-то вроде этого (я не компилируется этот код!):

while (finalNumber != 0){ 

    System.out.println("Enter your first number."); 
    firstNumber = input.nextFloat(); 
    input.nextLine(); 

    System.out.println("Enter your second number."); 
    secondNumber = input.nextFloat(); 

    finalNumber = firstNumber % secondNumber; 

} 
System.out.println(secondNumber + " and " + firstNumber + " are even multiples."); 
+0

Он заканчивается, когда 'finalNumber == 0'. То, что вы, вероятно, имели в виду, заключалось в том, что нужно было убедиться, что 'finalNumber' фактически сделал это 0. – Makoto

+0

thankyou, я попробую это. – user4289755

-1

вам нужно использовать, если заявление, потому что вы просто хотите, чтобы сообщить пользователю, что введенные цифры не являются правильными

do{ 
    System.out.println("Enter your first number."); 
    firstNumber = input.nextFloat(); 
    input.nextLine(); 


    System.out.println("Enter your second number."); 
    secondNumber = input.nextFloat(); 

    finalNumber = firstNumber % secondNumber; 
    if(finalNumber!=0) 
     System.out.println("values not correct "); 
}while(finalNumber!=0); 
+0

Нужен цикл, и я не вижу, как это исправит проблему. – Makoto

+0

Мне нужен цикл, потому что я не хочу, чтобы программа перестала работать. в основном, если последнее число не равно нулю, я хочу, чтобы код попросил пользователя ввести его номера. Если конечное число равно 0, я хочу, чтобы программа завершилась. – user4289755

+0

мое последнее изменение, решит ваш вопрос – Vihar

0

Будьте внимательны при расчетах для вашего цикла while. Если вы не обновляете переменную, которую вы используете для проверки внутри вашего цикла, вы входите в бесконечный цикл.

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

  • Получить значение # 1
  • Получить значение # 2
  • Пока value1 % value2 == 0 ...
    • ... распечатать сообщение и получить значение # 1 и значение # 2 от пользователя снова.
  • Распечатать сообщение для завершения.
System.out.println("Enter your first number."); 
firstNumber = input.nextFloat(); 
input.nextLine(); 
System.out.println("Enter your second number."); 
secondNumber = input.nextFloat(); 

while(firstNumber % secondNumber != 0) { 
    System.out.println("Please enter two numbers that are multiples of each other."); 
    System.out.println("Enter your first number."); 
    firstNumber = input.nextFloat(); 
    input.nextLine(); 
    System.out.println("Enter your second number."); 
    secondNumber = input.nextFloat(); 
} 

// afterwards, print whatever message you require. 
0

Если у вас нет никаких проблем в использовании не в то время, то следует использовать, если условия. Сделайте две отдельные функции. Один из них - проверить условие, которое вызывает другое условие, чтобы получить результат. Вот пример кода. Надеюсь, это поможет вам. Извините за плохой английский.

public class Looper 
{ 
     public static void main (String[] args) 
     { 
      Looper looper = new Looper(); 
      looper.runTest(); 
     } 

     public void runTest() 
     { 
      float finalNumber = getResult(); 
      System.out.println("finalNumber: " + finalNumber); 
      if(finalNumber != 0.0) 
     { 
      System.out.println("Please enter even multiples."); 
      runTest(); 
     } 
     } 

     public float getResult() 
     { 
      java.util.Scanner input=new java.util.Scanner(System.in); 

      System.out.println("Enter your first number."); 
      float firstNumber = input.nextFloat(); 
      input.nextLine(); 

      System.out.println("Enter your second number."); 
      float secondNumber = input.nextFloat(); 
      float finalNumber = firstNumber % secondNumber; 
      System.out.println(secondNumber + " and " + firstNumber + " are even multiples."); 
      return finalNumber; 
     } 

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