2015-10-25 3 views
1

Я не могу понять, почему мои инструкции if-else работают неправильно. Это то, что я до сих пор:Нужны программы, которые запрашивают у пользователя ввести 2 целых числа, проверьте, не является ли второе число кратным первого номера

import java.util.Scanner; 
public class multiple { 
    public static void main (String[] args){ 
     Scanner input = new Scanner (System.in); 
     int x = 4; 
     int y = 3; 
     int multiple = y % x; 
     while (multiple != 0){ 
      System.out.println("Enter two integers: "); 
      x = input.nextInt(); 
      y = input.nextInt(); 
      if (multiple != 0) 
       System.out.println("Oops, sorry! The second integer is NOT a multiple of the first integer."); 
      else 
       System.out.println("Good Job! " + y + " is a multiple of " + x + "!"); 
     }  
    } 
} 

ответ

0

Вы должны обновлять свою множественную переменную каждый раз, когда вы меняете x и y. То, что вы сейчас проверяете, если 4% 3 равно 0, каждый раз.

Другими словами, установите множитель y% x после обновления x и y.

+0

Не потеряю ли я мое заявление тогда? Мне нужно, чтобы он продолжал повторяться, пока пользователь не вводит 2 целых числа, которые являются кратными – Mel0927

+0

Спасибо! Это сработало! – Mel0927

1

Вы не обновляя multiple после приема пользователь input.Change ваш код, как this.it должен работать.

import java.util.Scanner; 
public class multiple { 
public static void main (String[] args){ 
    Scanner input = new Scanner (System.in); 
    int x = 4; 
    int y = 3; 
    int multiple = y % x; 
    while (multiple != 0){ 
System.out.println("Enter two integers: "); 
    x = input.nextInt(); 
    y = input.nextInt(); 
    multiple = y % x; 
     if (multiple != 0) 
      System.out.println("Oops, sorry! The second integer is NOT a multiple of the first integer."); 
     else 
      System.out.println("Good Job! " + y + " is a multiple of " + x + "!"); 
    }  
} 

} 
+0

ОК, что означало повторение изменения переменной после инструкции «while» для продолжения цикла? – Mel0927

+0

да кажется так. Для каждого набора входных данных вам нужно рассчитать и сбросить переменную 'multiple'. –

+0

Я продолжал читать это, но не повторял правильную формулировку кода. Спасибо – Mel0927

0

Чтобы добавить к тому, что сказал князь и playitright, я просил бы

  1. проверки, если число вводится пользователем, не равен нулю. Это очень важно, иначе вы можете столкнуться с исключением во время выполнения.
  2. Вы пытаетесь y% x, а не x% y.

потому что вы выбрали все типы данных, таким образом, x% y также должен быть проверен.

предположить,

х = 3 и у = 6, ваше решение работает, но если мы просто поменять местами значения, х = 6 и у = 3, выход не является правильным.

+0

Если я хочу, чтобы второе целое число проверялось как кратное первому целому, не я бы сохранил его как «Y% X» ?? – Mel0927

+0

Если пользователь вводит 6 и 3, 3 является кратным 6 (6 X 0,5) = 3, но если вы рассматриваете только целое число, то я думаю, что это не равно нулю. –

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

  • Нет связанных вопросов^_^