2013-11-23 46 views
0

当我把这个代码输入三个名称和标记。但名称不会循环3次,只要我可以输入,直接跳转到代码跳转到输入mark1。我该如何检查输入三个名字!Java循环和输入数据

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

可能重复[扫描仪问题nextXXX后使用nextLine时( http://stackoverflow.com/questions/7056749/scanner-issue-when-using-nextline-after-nextxxx) –

+0

@Sotirios Delimanolis谢谢,但它不是真正的解决方案。 –

+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()); 
} 
+1

我喜欢解决方案2,这太棒了! –