当前位置: 首页 > 知识库问答 >
问题:

当条件为假时,为什么我的程序会进入一个time循环?

卜季萌
2023-03-14

当我输入一个字符串运算符时,无论是加法()、减法(-)、乘法(*)、除法(/)还是模块(%),即使我输入了一个有效的输入,它仍然会进入而循环。我不知道问题可能是什么,因为当循环工作正常时,我必须为变量Num2输入一个int值。

import java.util.Scanner;

public class PolishNotationCalc {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        int num1;
        int num2;
        String operator;

        System.out.println("Polish notation calculator");

        System.out.print("Please enter an operation(+, -, *, /, %) ");
        operator = input.nextLine();

        while (!operator.equals("+") || !operator.equals("-") || !operator.equals("*") || !operator.equals("/") || !operator.equals("%")) {
            System.out.println("Please enter a valid operation ");
            operator = input.nextLine();
            if (operator.equals("+") || operator.equals("-") || operator.equals("*") || operator.equals("/") || operator.equals("%"))
                break;
        }

        System.out.print("");
        System.out.print("Please enter the first number ");
        num1 = input.nextInt();

        System.out.print("Please enter the second number ");
        num2 = input.nextInt();

        while (num2 == 0 && operator.equals("/")) {
            System.out.println("Please pick a non zero number: ");
            num2 = input.nextInt();
        }
        while (num2 == 0 && operator.equals("%")) {
            System.out.println("Please pick a non zero number: ");
            num2 = input.nextInt();

        }

        if (operator.equals("+"))
            System.out.println(num1 + " + " + num2 + " = " + (num1 + num2));

        else if (operator.equals("-"))
            System.out.println(num1 + " - " + num2 + " = " + (num1 - num2));

        else if (operator.equals("*"))
            System.out.println(num1 + " * " + +num2 + " = " + (num1 * num2));

        else if (operator.equals("/"))
            System.out.println(num1 + " / " + num2 + " = " + (num1 / num2));

        else if (operator.equals("%"))
            System.out.println(num1 + " % " + num2 + " = " + (num1 % num2));

    }

}

共有1个答案

冀俊良
2023-03-14

如果您用英语编写布尔选择,它将显示“当运算符不等于”“或不等于“-”或不等于“/”或不等于“*”或不等于“%”,请执行循环。

你需要它说“虽然运算符不等于”“它不等于”-“它不等于”/“它不等于”*“它不等于”%”这样做循环。

更改||to

对于一个要执行的循环,所有参数都需要为true。因此,如果其中一个参数为false,则不激活而循环

 类似资料:
  • 我是一个初学者,我从一本书中复制了这段代码,但它不起作用,因为当我进入EOF时,程序将两次打印默认消息,而不是退出while循环。这就像一个小时,我在寻找解决方案,但我所尝试的一切都不起作用,谢谢你的帮助。该程序应该计算每种等级的数量。

  • 我想写一个计算长除法问题总进位的代码。这是我为carries编写的函数。我相信问题在于,第一个while循环并没有一直运行。如果是,为什么?这是在Python 3.5中实现的。

  • 我试图让程序允许用户输入一个数字,然后让计算机告诉用户这个数字是否太小、太大或等于随机生成的数字。提示和输入有效,但在第一次扫描后就卡住了。 我认为这与scanf有关,而不是与条件有关,因为我添加了printf(“测试停止点”),但它不会打印到用户屏幕上。我做错了什么?

  • 当if语句为假时,为什么“无效运算符”会打印?我可以使用elif语句使其工作吗?

  • 我试图在Eclipse中调试一个简单的java程序,结果出现了以下错误: 本机方法中的致命错误:JDWP未初始化任何传输,jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197)错误:传输错误202:连接失败:连接超时错误:JDWPTransport dt_socket未能初始化,TRANSPORT_nit(510)JDWP退出错误AGENT_ERROR_TRANSPO

  • 我目前有2个pthread正在运行,我想等待其中一个结束,以便我的程序继续运行。 在我的pthreads中,我有一个可以为真或假的变量(它是一个全局变量)。创建线程后(一个在cin中请求输入,一个等待10秒,如果达到10秒,它会杀死“cin”线程并结束自己,如果检测到cin,“cin”线程会杀死“计时器”线程),我希望我的程序等待。当每个线程结束时,它们将变量“stoptimer”置为真。 首先,