gpt4 book ai didi

java - 扫描仪不等待 NewLine 通过循环收集输入

转载 作者:行者123 更新时间:2023-12-02 12:40:22 25 4
gpt4 key购买 nike

我对编码非常陌生,希望你们能帮助我。我遇到了 nextDouble 不等待 print.ln 收集数据的问题。通过我的启动输入,我必须输入两个数字才能移动到下一行,并要求输入我已经输入的第二个数字,因为它没有等待。到那时,它还决定请求第三个数字并接受该数字的输入,但请求第三个和第四个数字也没有问题。当重复时,它也会发生在循环内部。

我知道使用 nextDouble 并不意味着它将“等待”换行符,并且我知道 nextNumbertype 没有换行符标志,但通常的技巧在获得 double 后添加“input.nextLine”似乎不起作用。

我知道我可以将所有输入作为字符串并稍后进行转换,但这是一项家庭作业,我的教授似乎希望以一种非常具体的方式进行操作。

对于哪里出了问题或者我可以尝试什么有什么想法吗?

以下是输出内容:

Enter x1 or <crtl + z> to quit
1
4
Please input the x2 number:
Please input the y1 number:
1
Please input the y2 number:
5
Distance is 5.000000

Enter x1 or <crtl + z> to quit

这是实际的代码:

import java.util.Scanner;

public class distanceFinder {

public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
double x1 = 0;

System.out.println("Enter x1 or <crtl + z> to quit");
x1 = input.nextDouble();


while(input.hasNext())
{

System.out.println("Please input the x2 number:");
double x2 = input.nextDouble();

System.out.println("Please input the y1 number:");
double y1 = input.nextDouble();

System.out.println("Please input the y2 number:");
double y2 = input.nextDouble();

double x3 = 0;
double y3 = 0;
double xy1 = 0;

x3 = Math.pow((x2 - x1), 2);
y3 = Math.pow((y2 - y1), 2);

xy1 = x3 + y3;

double distance = Math.sqrt(xy1);

System.out.printf("Distance is %.6f %n%n%n", distance);

System.out.println("Enter x1 or <crtl + z> to quit");
x1 = input.nextDouble();

}
input.close();
}

}

最佳答案

问题是 Scanner.hasNext() 会阻塞,直到有输入为止。一旦您输入内容,它就会进入循环,执行第一个打印语句,抓取输入,打印第二个语句,然后等待下一个输入。

另一个问题是,您在读取 ​​x2 之前而不是在 x1 之前检查 hasNext()。试试这个结构:

System.out.println("Enter x1 or <crtl + z> to quit");
while (input.hasNext()) {
double x1 = input.nextDouble();

System.out.println("Please input the x2 number:");
double x2 = input.nextDouble();

//...

System.out.println("Enter x1 or <crtl + z> to quit");
}

关于java - 扫描仪不等待 NewLine 通过循环收集输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44961307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com