Java循环和输入数据

时间:2013-11-23 23:15:30

标签: java for-loop

当我将此代码用于输入三个名称和标记时。但是只要我输入一次,名称就不会循环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:

1 个答案:

答案 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());
}