Java while循环在与scan.nextLine()交互一次后终止;方法
我是一名刚开始学习计算机科学的学生,目前有一个问题困扰着我。 这是一个简单的程序,它要求用户输入一个数字Java while循环在与scan.nextLine()交互一次后终止;方法,java,while-loop,java.util.scanner,Java,While Loop,Java.util.scanner,我是一名刚开始学习计算机科学的学生,目前有一个问题困扰着我。 这是一个简单的程序,它要求用户输入一个数字x,然后为该数字求解一个多项式方程。之后,它应该询问用户是否想继续,如果想继续,就会提示x的新号码。然而,这个程序只要求用户输入x一次,然后在计算多项式后终止。它甚至打印Continue?,但甚至不等待读取下一行,它似乎在之后立即终止。它似乎忽略了response=scan.nextLine()完全 这个问题的目的是学习如何使用while循环和扫描器 有人能看出我的错误并给我一个提示吗 谢谢大
x
,然后为该数字求解一个多项式方程。之后,它应该询问用户是否想继续,如果想继续,就会提示x
的新号码。然而,这个程序只要求用户输入x一次,然后在计算多项式后终止。它甚至打印Continue?
,但甚至不等待读取下一行,它似乎在之后立即终止。它似乎忽略了response=scan.nextLine()代码>完全
这个问题的目的是学习如何使用while循环和扫描器
有人能看出我的错误并给我一个提示吗
谢谢大家!
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()
时要注意这一点-这是经常犯的典型错误 使用
x= Double.parseDouble(scan.nextLine());
而不是
x = scan.nextDouble();
这是因为当您输入数字并按“Return”时,nextInt只接受输入的整数,因此“Return-End of Line”仍然是该行的一部分,该行被分配给响应变量,并在while循环中进行计算,失败原因是它不等于“y”。解决方法是在读取响应之前跳过一行
System.out.println ("continue (y or n)?");
scan.nextLine();
response = scan.nextLine();
非常感谢,这解决了问题。