2013-09-25 4 views
1

Итак, у меня есть этот простой код в 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); 
} 
} 

ответ

6

Вы должны использовать sc.nextLine() после nextInt(), потому что nextInt() не потребляет разрыв строки (в отличие от nextLine()). Таким образом, в начале цикла (после первой итерации) всегда возникает дополнительный разрыв строки.

1

Использование

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

и

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

вместо использования sc.nextInt();

Кроме того, необходимо рассмотреть оборачивать эти строки с try{} catch(...) блоков, чтобы избежать других, чем целые числа входов.

Смежные вопросы