我对编码很陌生,希望你们能帮助我。 我有一个nextDouble没有等待print.ln收集数据的问题。 随着我的启动输入,我必须输入两个数字来移动到下一行,并要求输入第二个数字,因为它没有等待。 到了这一点,它也决定要求第三个数字,并接受该输入,但可以毫无问题地要求第三个和第四个数字。 重复时,它也发生在循环内部。扫描仪不等待NewLine收集循环输入
我知道使用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();
}
}
问题是与'hasNext'按照javadcos *此方法可以在等待要扫描的输入框* –