Java while 循环在与 scan.nextLine() 交互后终止;方法

标签 java while-loop java.util.scanner

我是一名计算机科学专业的初学者,目前遇到一个问题。 这是一个简单的程序,要求用户输入一个数字x,然后求解该数字的多项式方程。然后,它应该询问用户是否要继续,如果是,则提示 x 的新号码。但是,该程序仅询问用户 x 一次,然后在计算多项式后终止。它甚至打印 Continue? 但甚至不等待读取下一行,它似乎立即终止。它似乎完全忽略了 response = scan.nextLine();

此问题的目标是学习如何使用 while 循环和 Scanner。

有人能看到我的错误并给我提示吗?

谢谢!

import java.util.Scanner;

class EvalPoly
{
    public static void main (String[] args)
    {

    Scanner scan = new Scanner (System.in);

    double x;       // a value to use with the polynomial
    double result;  // result of evaluating the polynomial at x
    String response = "y"; // yes or no

    while ( response.equals("y") )
    {
        // Get a value for x
        System.out.println("Enter a value for x:");
        x = scan.nextDouble();

        // Evaluate the polynomial
        result = (7 * x * x * x) - (3 * x * x) + (4 * x) - (12);

        // Print out the result
        System.out.println("The result of the polynomial at x = " + x +" is: " +                                result + "\n");

        // Aks user if the program should continue
        // The users answer is "response"
        System.out.println ("continue (y or n)?");
         response = scan.nextLine();    
    }
}
}

最佳答案

nextDouble() 仅读取 double,而不是写入 double 的行尾 - 因此,当您下次调用 nextLine() 时,它会读取 (空)该行的剩余部分,不等于“y”,因此它从循环中中断。

nextLine() 直接放在 nextDouble() 调用之后应该可以通过消耗此空行的其余部分来修复它。

使用 nextDouble()nextInt() 时请注意这一点 - 这是经常犯的经典错误!

关于Java while 循环在与 scan.nextLine() 交互后终止;方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20816555/

相关文章:

Javascript 将 2 个字段与 PHP while 循环内的第三个字段中的答案相乘

php - 查询结果记录到列中进行比较

java - 扫描仪读取数据文件 Java.Util.NoSuchElementException : Null

java - 如何在 Windows 中使用 java 将 webp 转换为 png 或 jpg?

java - 为什么不能将两个字节加一个整数并可以将两个最后字节加一个字节?

java - 从 XPath 查询中获取空值

java - 如何在android中使用位置获取模态类数据

ruby - 尝试使用 Ruby while 循环查找字符串的元音

java - 使用 Java 检查用户输入是否为空

java - 这个程序如何在不知道数据类型的情况下接受数据?