当我将此代码用于输入三个名称和标记时。但是只要我输入一次,名称就不会循环3次,直接将代码跳转到输入mark1
。我怎样才能检查输入三个名字!
public void in_array(String x[], float x2[], float x3[])
{
for(i=0; i<x.length;i++)
{
System.out.println("Enter name: ");
x[i] = in.nextLine();
System.out.println("Enter Mark one: ");
x2[i] = in.nextFloat();
System.out.println("Enter Mark two: ");
x3[i] = in.nextFloat();
}
}
输出:
enter name:
Enter mark one:
答案 0 :(得分:0)
问题是nextFloat()方法不使用换行符。你要么必须手动使用该字符,要么读完整行并手动解析你的浮点数。
使用解决方案#1的快速修复可能如下所示:
for(i=0; i<x.length;i++)
{
System.out.println("Enter name: ");
x[i] = in.nextLine();
System.out.println("Enter Mark one: ");
x2[i] = in.nextFloat();
in.nextLine(); // consume newline character
System.out.println("Enter Mark two: ");
x3[i] = in.nextFloat();
in.nextLine(); // consume newline character
}
解决方案#2看起来像这样:
for(i=0; i<x.length;i++)
{
System.out.println("Enter name: ");
x[i] = in.nextLine();
System.out.println("Enter Mark one: ");
x2[i] = Float.parseFloat(in.nextLine());
System.out.println("Enter Mark two: ");
x3[i] = Float.parseFloat(in.nextLine());
}