所以我在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);
}
}
答案 0 :(得分:6)
您需要在sc.nextLine()
之后使用nextInt()
,因为nextInt()不使用换行符(与nextLine()不同)。因此,在循环开始时(第一次迭代之后)总会有额外的换行符等待。
答案 1 :(得分:1)
使用
salary=Integer.parseInt( sc.nextLine() );
和
choice = Integer.parseInt( sc.nextLine() );
而不是使用sc.nextInt();
您还需要考虑使用try{} catch(...)
块来包装这些行,以避免整数以外的输入。