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

无法使循环正确工作

吉玉石
2023-03-14

我试图使一个计算器与一定的输入,是输入像+5或/10 2。当我编译并运行它时,我会得到以下错误:

线程“main”java.util.NoSuchelementException
在java.util.scanner.throwfor(Scanner.java:907)
在java.util.scanner.next(Scanner.java:1416)
在calc.main(calc.java:11)

import java.util.Scanner;
public class calc {

public static void main(String[] args) {
    Scanner input = new Scanner( System.in );
        String calc;
        double num1;
        double calcdu = 0.0;
        double num2;
        while ( true ) {
            calc = input.next();
            num1 = input.nextDouble();
            num2 = input.nextDouble();

            if (calc.equals("+"))
            { 
                    calcdu= num1 + num2;
                    System.out.printf("%.2e %s %.2e %c %.2e\n", num1, "+", num2, '=', calcdu);
            }       

            if (calc.equals("/"))
            {   
                calcdu=num1/num2;
                System.out.printf("%.2e %s %.2e %c %.2e\n", num1, "/", num2, '=', calcdu);
            }

            if (calc.equals("-"))
            {   
                    calcdu=num1-num2;
                    System.out.printf("%.2e %s %.2e %c %.2e\n", num1, "-", num2, '=', calcdu);
            }       
            if (calc.equals("*"))
            {   
                    calcdu=num1*num2;
                    System.out.printf("%.2e %s %.2e %c %.2e\n", num1, "*", num2, '=', calcdu);
            }
            if (calc.equals("%"))
            {   
                    calcdu=num1%num2;
                    System.out.printf("%.2e %s %.2e %c %.2e\n", num1, "%", num2, '=', calcdu);
            }

}}}

共有1个答案

敖硕
2023-03-14

您在扫描程序调用next()而没有检查hasnext()

while(input.hasNext())
{
 num1 = Double.parseDouble(input.nextDouble());
            num2 = Double.parseDouble(input.nextDouble());

......//further code
 类似资料:
  • 问题内容: 我有这段代码,我想浏览页面底部所有可用的链接。单击它们后,我要确保打开的URL是正确的。我认为递归调用还为时过早。另一个问题是如何判断链接属于某个URL。 问题答案: 嗯,看来您几天前就受够了。我建议您使用page-object,它将帮助您避免使用硬代码,并在将来更轻松地更改css。 主页对象(home.js)可能像这样: 并且在您的测试中应该像: PS:如果您不知道如何创建页面对象,

  • 我已经阅读了这里所有的相关问题,但没有找到解决方案。 我正试图从串行端口一个接一个地读取字节。 当我在无限循环中检查一些字节是否可用时,它总是工作正常,并显示我发送给它的内容 但当我检查无限循环的外部时,它只捕获一个字节,显示它,然后关闭串行端口 这是我的密码 我不明白为什么会这样!!有人能帮我吗?谢谢 更新:我在上面的代码中添加了serialHasChar()函数的定义

  • 问题内容: 所以我在将文本文件读入程序时遇到了问题。这是代码: 我正在读取的文件是100行参数。如果我使用for循环,则效果很好。如果我使用while语句(在for循环上方被注释掉的那条语句)停止在50。用户有可能使用具有任意行数的文件运行该程序,因此我当前的for循环实现不会工作。 为什么行在50处停止?我检查了文本文件,没有什么可以挂断它的。 当我使用while循环时,我没有从try-catc

  • 问题内容: 我正在使用multiprocessor.Pool()模块来加速“令人尴尬的并行”循环。其实我有一个嵌套的循环,现在用multiprocessor.Pool加快内循环。例如,在不并行化循环的情况下,我的代码如下: 使用并行化: 我的主要问题是这是否正确,我应该在循环内包含multiprocessing.Pool(),或者是否应该在循环外创建池,即: 另外,我不知道我是否应该包括线“poo

  • 当我执行这段代码时,输出是“140”,也就是“28*5”,但它应该是“150”,也就是“28+31+30+31+30”,它应该计算两个月“2月”和“7月”之间的天数...所以这意味着for循环不能正常工作还是怎么的?为什么会这样!你能帮我一下吗??PS:我试图将循环中的j++更改为j+1,但Android Studio说“这不是一个声明”

  • Imma java新手,所以我试着学东西。我创建了一个布尔方法,这是一个小的骰子游戏。我需要这个方法是从main方法调用,并继续玩,而返回值是真的(游戏是赢的),但停止执行,如果返回值是假的。我也需要多少次球员赢了。所以我创造了这样的东西: 初始化为私有静态int