迭代后跳过一行

时间:2013-09-25 13:10:02

标签: java iteration

所以我在java中有这个简单的代码。但是,当我尝试"再次使用该程序" 时,它始终会跳过输入名称的第一个条目。我该如何解决这个问题?

以下是代码:

import java.util.Scanner;
public class Try{
public static void main(String args[]){
    Scanner sc=new Scanner(System.in);
    int salary;
    String name, perform;
    int choice = 1;
    do{
        System.out.println("Enter your name:");     
        name=sc.nextLine(); 
        System.out.println("Enter your performance:");  
        perform=sc.nextLine();
        System.out.println("Enter your salary:");   
        salary=sc.nextInt();

        System.out.println("Name: "+name);
        System.out.println("Performance: " + perform);
        System.out.println("Salary:" + salary);

        System.out.println("Do you want to use the program again?\n[1]Yes\n[2]No"); 
        choice=sc.nextInt();
    }while (choice < 2);
}
}

2 个答案:

答案 0 :(得分:6)

您需要在sc.nextLine()之后使用nextInt(),因为nextInt()不使用换行符(与nextLine()不同)。因此,在循环开始时(第一次迭代之后)总会有额外的换行符等待。

答案 1 :(得分:1)

使用

salary=Integer.parseInt( sc.nextLine() );

choice = Integer.parseInt( sc.nextLine() );

而不是使用sc.nextInt();

您还需要考虑使用try{} catch(...)块来包装这些行,以避免整数以外的输入。