2017-04-21 44 views
-1
package com.company; 

import java.util.Scanner; 

public class Main { 

    public static void main(String[] args) { 
     Scanner myScanner = new Scanner(System.in); 
     int operator; 
     double number1, number2, result; 
     boolean ask = true; 
     while (ask) { 

     System.out.println("please select your operator:\n" 
       + "1 for +\n" + 
       "2 for -\n" + 
       "3 for *\n" + 
       "4 for %\n" + 
       ""); 
     operator = myScanner.nextInt(); 
     System.out.println("you chose " + operator + " operator babe"); 


      System.out.println("please enter your first number"); 
      Scanner numberScanner = new Scanner(System.in); 
      number1 = numberScanner.nextDouble(); 
      System.out.println("please enter your second number"); 
      Scanner numberScanner2 = new Scanner(System.in); 
      number2 = numberScanner2.nextDouble(); 


      switch (operator) { 
       case 1: 
        result = number1 + number2; 
        System.out.println("result is:" + result); 
        break; 
       case 2: 
        result = number1 - number2; 
        System.out.println("result is:" + result); 
        break; 
       case 3: 
        result = number1 * number2; 
        System.out.println("result is:" + result); 
        break; 
       case 4: 
        result = number1/number2; 
        System.out.println("result is:" + result); 
        break; 
       default: 
        System.out.println("you chosen the wrong operator babe :)"); 
        break; 
      } 


      System.out.println("do yo want to continue?\n" + 
        "y for yes\n" + 
        "n for no\n"); 
      char askInput = myScanner.next().charAt(0); 
      if (askInput=='n') ask=false; 
     } 
    } 
} 

我在開關的情況下
如果我按任意數字或字母財產以後像5或6或...它應該打印you chose wrong operator了麻煩。邏輯錯誤......在開關的情況下

我覺得問題是在我的默認,但我不知道它在哪裏?

+1

也應該比你居然把'之開關語句中的位置之前,你要輸入號碼一個有效的選項,並在FIRST用戶輸入後,而不是最後。在第一次輸入之後,您應該如何告訴您這是錯誤的輸入,您立即開始讀取兩個數字,並檢查用戶確實選擇了AFTERWARDS的選項。嘗試輸入'5',之後輸入2個數字,然後你會收到你想要的信息。 – SomeJavaGuy

+0

我選擇了例子5後,它繼續並接受5但邏輯它不能接受5並且默認應該運行 – saeb

回答

-1

爲我的意見,如果你想要讓用戶輸入另一個2個數字之前,驗證用戶是否輸入(選項),比,是的,你實際上應該PROGRAMM這樣驗證在第一次用戶輸入後進入右側。這是你的代碼的一個稍微更正的版本。

public static void main(String[] args) { 
    int operator; 
    double result; 
    boolean ask = true; 
    Scanner numberScanner = new Scanner(System.in); 
    while (ask) { 

     System.out.println(
       "please select your operator:\n" + "1 for +\n" + "2 for -\n" + "3 for *\n" + "4 for %\n" + ""); 
     operator = numberScanner.nextInt(); 
     System.out.println("you chose " + operator + " operator babe"); 

     // Here was your "Mistake". You instantly started asking the user for another input, 
     // but actually wanted to ahve the switch statment here 

     switch (operator) { 
     case 1: 
      result = get_num1(numberScanner) + get_num2(numberScanner); 
      System.out.println("result is:" + result); 
      break; 
     case 2: 
      result = get_num1(numberScanner) - get_num2(numberScanner); 
      System.out.println("result is:" + result); 
      break; 
     case 3: 
      result = get_num1(numberScanner) * get_num2(numberScanner); 
      System.out.println("result is:" + result); 
      break; 
     case 4: 
      result = get_num1(numberScanner) % get_num2(numberScanner); 
      System.out.println("result is:" + result); 
      break; 
     default: 
      System.out.println("you chosen the wrong operator babe :)"); 
      break; 

     } 

     System.out.println("do yo want to continue?\n" + "y for yes\n" + "n for no\n"); 
     char askInput = numberScanner.next().charAt(0); 
     if (askInput == 'n') 
      ask = false; 
    } 
} 

public static double get_num1(Scanner scanner) { 
    System.out.println("please enter your first number"); 
    return scanner.nextDouble(); 
} 

public static double get_num2(Scanner scanner) { 
    System.out.println("please enter your second number"); 
    return scanner.nextDouble(); 
} 
+0

tnx給你親愛的 – saeb

-1

只需在爲輸入分配時驗證操作員即可。

例如使用,如果條件和檢查以及5是否其之間1,如果沒有打印任何你想要的

-1

兩件事:

你不需要只使用一個2個掃描儀就足夠

代碼表現如此,因爲你去到交換機案後問你要操作的數字...

一些條件,如:

operator = myScanner.nextInt(); 
if (operator < 1 || operator > 4) { 

} 

可以幫助....

+0

謝謝你建議一個sccaner – saeb

+0

歡迎你! –

0

只是重新給這樣的代碼

`public static void main(String[] args) { 
    Scanner myScanner = new Scanner(System.in); 
    int operator; 
    double number1, number2, result; 
    boolean ask = true; 
    while (ask) { 
     System.out.println("please enter your first number"); 
     Scanner numberScanner = new Scanner(System.in); 
     number1 = numberScanner.nextDouble(); 
     System.out.println("please enter your second number"); 
     Scanner numberScanner2 = new Scanner(System.in); 
     number2 = numberScanner2.nextDouble(); 

     System.out.println("please select your operator:\n" 
       + "1 for +\n" 
       + "2 for -\n" 
       + "3 for *\n" 
       + "4 for %\n" 
       + ""); 
     operator = myScanner.nextInt(); 

     switch (operator) { 
      case 1: 
       result = number1 + number2; 
       System.out.println("result is:" + result); 
       break; 
      case 2: 
       result = number1 - number2; 
       System.out.println("result is:" + result); 
       break; 
      case 3: 
       result = number1 * number2; 
       System.out.println("result is:" + result); 
       break; 
      case 4: 
       result = number1/number2; 
       System.out.println("result is:" + result); 
       break; 
      default: 
       System.out.println("you chosen the wrong operator babe :)"); 
       break; 
     } 
     System.out.println("you chose " + operator + " operator babe"); 

     System.out.println("do yo want to continue?\n" 
       + "y for yes\n" 
       + "n for no\n"); 
     char askInput = myScanner.next().charAt(0); 
     if (askInput == 'n') { 
      ask = false; 
     } 
    } 
}` 

,你會被罰款