簡體   English   中英

我在使用Java“ if語句”時遇到問題

[英]i am having problems with java “if statement”

我是一個初學者,我正在嘗試在while循環中嵌套if語句。 我用這種方式做了一個基本的計算器,但是我有一個小問題。 我將首先共享代碼,然后提出我的問題。

這是代碼:

import java.util.Scanner;
class whileloop{
    public static void main(String args[]){
        Scanner scan = new Scanner(System.in);
    System.out.println("This is a basic calculator.");
    System.out.println("To exit, input exit when asked to input the method.");
    System.out.println("----------------------------------------------");
    while (true){
        System.out.println("to add, input '+', to subtract, input '-', to divide, input '/', to multiply, input '*' and to exit, input 'exit.'");
        System.out.println("----------------------------------------------------");
        System.out.print("Please enter a method here:");
        String method = scan.nextLine();
        if (method.equals("exit")){
            System.out.println("You chose to exit.");
            break;
        }
        else if (method.equals("+")){
            System.out.println("You chose to add.");
            System.out.print("Please enter first number here:");
            double fnum = scan.nextInt();
            System.out.print("Please enter second number here:");
            double snum = scan.nextInt();
            double ans = fnum + snum;
            System.out.print("The answer is");
            System.out.println(ans);
        }
        else if(method.equals("-")){
            System.out.println("You chose to subtract.");
            System.out.print("Please enter first number here:");
            double fnum = scan.nextInt();
            System.out.print("Please enter second number here:");
            double snum = scan.nextInt();
            double ans = fnum - snum;
            System.out.print("The answer is");
            System.out.println(ans);
        }
        else if(method.equals("*")){
            System.out.println("You chose to multiply.");
            System.out.print("Please enter first number here:");
            double fnum = scan.nextInt();
            System.out.print("Please enter second number here:");
            double snum = scan.nextInt();
            double ans = fnum * snum;
            System.out.print("The answer is");
            System.out.println(ans);
        }
        else if(method.equals("/")){
            System.out.println("You chose to divide.");
            System.out.print("Please enter first number here:");
            double fnum = scan.nextInt();
            System.out.print("Please enter second number here:");
            double snum = scan.nextInt();
            double ans = fnum / snum;
            System.out.print("The answer is");
            System.out.println(ans);
        }
        else{
            System.out.println("Invalid input. please select a valid input from the list of operators given.");
        }
    }
}
}

如您所見,它要求使用可變method來處理輸入fnumsnum

最后,我添加了else語句。 它應該在用戶未輸入有效的操作method時通知用戶。

問題是,無論何時我執行此代碼,無論我輸入的method什么,它都將首先正常運行,要求輸入fnumsnum ,然后輸出答案,但是它還會在else語句中執行代碼塊。

如何預防呢? 請幫忙!

同樣,這是我得到的輸出:(我將其放在代碼塊中只是為了使其看起來更有條理。)

to add, input '+', to subtract, input '-', to divide, input '/', to multiply, input '*'         and to exit, input 'exit.'
----------------------------------------------------
Please enter a method here:+
You chose to add.
Please enter first number here:10
Please enter second number here:10
The answer is20.0
to add, input '+', to subtract, input '-', to divide, input '/', to multiply, input '*'     and to exit, input 'exit.'
----------------------------------------------------
Please enter a method here:Invalid input. please select a valid input from the list of     operators given.
to add, input '+', to subtract, input '-', to divide, input '/', to multiply, input '*'   and to exit, input 'exit.'
----------------------------------------------------
Please enter a method here:
use scan.nextLine() immediately after scan.nextInt().

每當我們輸入數字並按Enter時,scan.nextInt()只會讀取數字,而不是“行尾”。 當我們做scan.nextLine();時 它從第一個輸入讀取仍在緩沖區中的“行尾(\\ n)”。

import java.util.Scanner;
class whileloop{
    public static void main(String args[]){
        Scanner scan = new Scanner(System.in);
    System.out.println("This is a basic calculator.");
    System.out.println("To exit, input exit when asked to input the method.");
    System.out.println("----------------------------------------------");
    while (true){
        System.out.println("to add, input '+', to subtract, input '-', to divide, input '/', to multiply, input '*' and to exit, input 'exit.'");
        System.out.println("----------------------------------------------------");
        System.out.print("Please enter a method here:");
        String method = scan.nextLine();
        if (method.equals("exit")){
            System.out.println("You chose to exit.");
            break;
        }
        else if (method.equals("+")){
            System.out.println("You chose to add.");
            System.out.print("Please enter first number here:");
            double fnum = scan.nextInt();
        scan.nextLine();
            System.out.print("Please enter second number here:");
            double snum = scan.nextInt();
        scan.nextLine();
            double ans = fnum + snum;
            System.out.print("The answer is");
            System.out.println(ans);
        }
        else if(method.equals("-")){
            System.out.println("You chose to subtract.");
            System.out.print("Please enter first number here:");
            double fnum = scan.nextInt();
        scan.nextLine();
            System.out.print("Please enter second number here:");
            double snum = scan.nextInt();
        scan.nextLine();
            double ans = fnum - snum;
            System.out.print("The answer is");
            System.out.println(ans);
        }
        else if(method.equals("*")){
            System.out.println("You chose to multiply.");
            System.out.print("Please enter first number here:");
            double fnum = scan.nextInt();
        scan.nextLine();
            System.out.print("Please enter second number here:");
            double snum = scan.nextInt();
        scan.nextLine();
            double ans = fnum * snum;
            System.out.print("The answer is");
            System.out.println(ans);
        }
        else if(method.equals("/")){
            System.out.println("You chose to divide.");
            System.out.print("Please enter first number here:");
            double fnum = scan.nextInt();
        scan.nextLine();
            System.out.print("Please enter second number here:");
            double snum = scan.nextInt();
        scan.nextLine();
            double ans = fnum / snum;
            System.out.print("The answer is");
            System.out.println(ans);
        }
        else{
            System.out.println("Invalid input. please select a valid input from the list of operators given.");
        }
    }
}
}

String method = scan.nextLine(); 計算后返回"" 由於任何if語句中的空白字符串均不匹配, else將求值

這是因為scan.nextLine()在計算之后返回"" 因此,您只需添加此行即可。

     System.out.println("to add, input '+', to subtract, input '-', to divide, input '/', to multiply, input '*' and to exit, input 'exit.'");
     System.out.println("----------------------------------------------------");
     System.out.print("Please enter a method here:");        
     String method = scan.nextLine();
     // add this line
     if (method.equals(""))
     {
        continue; // no "" will be there 
     }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM