Warm tip: This article is reproduced from serverfault.com, please click

其他-如何获得用户输入验证到我的Java计算器程序中?

(其他 - How do I get user input validation into my java calculator program?)

发布于 2020-11-27 01:30:15

因此,我最近在Java中制作了一个计算器作为作业,并且我已经找到了制作它的所有方法,直到发球台。我已经完成了if语句和switch语句,以允许用户根据他们使用的运算符来获得不同的答案(/, *, +, -),但是,我还不太了解fordo并且do-while还没有循环将其集成到我的程序中。

这是我的计算器的源代码。如你所见,如果switch语句不是运算符,则它会显示“ Invalid”(无效),但是,我不希望用户重新运行整个应用程序,而是希望它循环(而不是仅针对运算符,而是针对以及数字)

import java.util.Scanner;

public class JCal
{
public static void main (String[] args)
{
    Scanner input = new Scanner(System.in);

    double num1, num2, divided, multiplied, added, subtracted;
    char operator;

    System.out.print("Value A: ");
    num1 = input.nextDouble();

    System.out.print("Operator (/, *, +, -): ");
    operator = input.next().charAt(0);

    System.out.print("Value B: ");
    num2 = input.nextDouble();

    divided = num1 / num2;
    multiplied = num1 * num2;
    added = num1 + num2;
    subtracted = num1 - num2;

    switch (operator)
    {
        case '/':
        {
            System.out.println("Result: " + divided);
            break;
        }
        case '*':
        {
            System.out.println("Result: " + multiplied);
            break;
        }
        case '+':
        {
            System.out.println("Result: " + added);
            break;
        }
        case '-':
        {
            System.out.println("Result: " + subtracted);
            break;
        }
        default:
        {
            System.out.println("Invalid operator!");
            break;
        }
    }
}

}

我尝试了类似的东西:

double num1;
Scanner input = new Scanner(System.in);

do
        {
            System.out.println("Value A: ");
            while (! input.hasNextDouble());
            {
                System.out.println("Invalid number!");
                input.nextDouble();
            }
        } while (num1 = input.hasNextDouble());

根据IntelliJ的说法,这while (num1 = input.hasNextDouble());就是我被卡住的地方,是abooleandouble冲突(我假设因为num1是a double,并且.hasNext函数给出a boolean,所以它们不在一起。)所以IntelliJ在红色下划线标出。

非常感谢,如果你抽出宝贵的时间来帮助我解决这个可能很琐碎的问题。

Questioner
Nod
Viewed
11
Adnan Azad 2020-11-30 01:20:21

也许你可以创建一个'bool Exit'变量并将其初始设置为False

将整个代码(显然是main除外)放入do while循环中,条件是直到exit为真

main {
   do {
      ... your code
   }while(Exit != True)
}

因此,在每次运行结束后,你都可以要求用户尝试其他计算(是/否),如果,请将Exit设置为true,你的程序将退出循环。如果是,则将Exit设置为False,你的程序将再次循环。