2015-01-22 2 views
1

Я хотел бы задать вопрос о моем коде.Сканер Java, требующий нескольких входов

Прошу прощения за неэффективность и беспорядок, я все еще пытаюсь изучить java.

System.out.println("Please choose the number corresponding to the operation: "); 
    System.out.println("1 for add,2 for subtract,3 for multiply, 4 for divide, 5 for print, and 6 for exit: "); 

    if (sc.nextInt() == 5) { 
     System.out.println("Your first fraction is: " + num1 + "/" + denom1 + " or in decimal: " + ((float) num1/denom1)); 
     System.out.println("Your second fraction is: " + num2 + "/" + denom2 + " or in decimal: " + ((float) num2/denom2)); 
    } else if (sc.nextInt() == 3) { 
     System.out.println("Multiply: " + (num1 * num2) + "/" + (denom1 * denom2)); 

    } else if (sc.nextInt() == 4) { 
     System.out.println("Divide: " + (num1 * denom2) + "/" + (denom1 * num1)); 

    } else if (sc.nextInt() == 1) { 
     int d = denom1 * denom2; 
     int n1 = num1 * denom2; 
     int n2 = num2 * denom1; 
     System.out.println("Addition: " + (n1 + n2) + "/" + d); 


    } else if (sc.nextInt() == 2) { 
     int d = denom1 * denom2; 
     int n1 = num1 * denom2; 
     int n2 = num2 * denom1; 
     System.out.println("Subtract: " + (n1 - n2) + "/" + d); 
    } 
    else if (sc.nextInt() == 6) { 
     System.exit(0); 
    } 
} 
} 

Когда я запускаю программу, то первое, если оператор получает штраф, как я только ввести номер 5 один раз. Однако, как вы можете видеть из второго, если оператор, который является номером 3, требует двух входов, я должен ввести его два раза до появления следующей строки. Третий другой оператор if, который является номером 4, требует 3 ввода до появления следующей строки и т. Д. С каждым последующим else if. Простите, если я не объясню это правильно, Кто-нибудь может понять, почему это происходит?

ответ

2

Изменить код:

int input = sc.nextInt(); 
sc.nextLine(); 
if (input == 5) { 

и все другие if (sc.nextInt()...) также.

nextInt будет потреблять ваши данные. Так что, если вы переходите ко второму if, входное устройство потребляется первым if.

nextLine Обязательно использовать <ENTER> после значения int.

+0

большое вам спасибо! и да, я буду помнить об этом в следующий раз, когда ура! –

0
  Try to use switch statement. 
    package practice; 
    import java.util.Scanner; 
    public class Stack{ 
    public static void main(String[] args) { 
    Scanner sc=new Scanner(System.in); 
    System.out.println("ENTER THE 2 NUMBERS"); 
    int num1=sc.nextInt(); 
    int num2=sc.nextInt(); 
    System.out.println("ENTER THE CHOICE"); 
    int choice='0'; 
    while(choice!=6) 
    { 
     choice=sc.nextInt(); 
     System.out.println(choice); 
    switch(choice) 
    { 
    case 1: 
     int add=num1+num2; 
     System.out.println("Addition:"+add); 
     break; 
    case 2: 
      System.out.println("Subtract:"); 
     break; 
    case 3: 
      System.out.println("Multiply:"); 
     break; 
    case 4: 
     System.out.println("Divide:"); 
     break; 
    case 5: 
     System.out.println("Your first fraction is:"); 
     System.out.println("Your second fraction is:"); 
     break; 
    case 6: 
     System.exit(0); 
     break; 
    default: 
     System.out.println("LOSER"); 
     break; 
      } 
          }  
    sc.close(); 
       } 
    } 
Смежные вопросы