2013-09-11 2 views
0

Я смог решить свою последнюю проблему, однако один из ребят предложил мне задать новый вопрос, так что вот мы и пришли. Этот фрагмент кода не работает и является частью основного класса EmployeeTest.java.Сканер не блокируется для ввода

//change the company name 
    String newCompanyName; 
    System.out.println("Please enter a new company name:"); 
    newCompanyName = conIn.nextLine(); 
    Employees.setCompanyName(newCompanyName); 

Выход для приведенного выше кода:

--------------------------------------- 

Please enter a new company name: 

--------------------------------------- 

Он просто печатает все до и после этого кода и вывода. Он никогда не просит ввода.

Следующий код является совокупность EmployeeTest.java

/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
*/ 
package employeerionmurphy; 
import employeerionmurphy.Employees.*; 
import java.util.*; 

/** 
* 
* @author Owner 
*/ 
public class EmployeeTest { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     // TODO code application logic here 

     //declare scanner 
     Scanner conIn = new Scanner(System.in); 

     //instantiate 4 employee objects 
     Employees worker1 = new Employees(); 
     Employees worker2 = new Employees(); 
     Employees worker3 = new Employees(); 
     Employees worker4 = new Employees(); 

     //Display the Employees 
     System.out.println("Employee 1"); 
     System.out.println("----------------------"); 
     System.out.println(worker1.getInfo()); 
     System.out.println("Employee 2"); 
     System.out.println("----------------------"); 
     System.out.println(worker2.getInfo()); 
     System.out.println("Employee 3"); 
     System.out.println("----------------------"); 
     System.out.println(worker3.getInfo()); 
     System.out.println("Employee 4"); 
     System.out.println("----------------------"); 
     System.out.println(worker4.getInfo()); 

     //spacer for user readability 
     System.out.println(""); 
     System.out.println("--------------------------------------------"); 
     System.out.println(""); 

     //declare variables to update Employees 
     String newFirstName1, newFirstName2, newFirstName3, newFirstName4; 
     String newLastName1, newLastName2, newLastName3, newLastName4; 
     String newAddress1, newAddress2, newAddress3, newAddress4; 
     String newCity1, newCity2, newCity3, newCity4; 
     int newHoursWorked1, newHoursWorked2, newHoursWorked3, newHoursWorked4; 
     int newWageRate1, newWageRate2, newWageRate3, newWageRate4; 

     //update the employee (in progress) 
     //upating worker1 
     System.out.println("Please enter Employee 1's first name:"); 
     newFirstName1 = conIn.nextLine(); 
     System.out.println("Please enter Employee 1's last name:"); 
     newLastName1 = conIn.nextLine(); 
     System.out.println("Please enter Employee 1's address:"); 
     newAddress1 = conIn.nextLine(); 
     System.out.println("Please enter Employee 1's city:"); 
     newCity1 = conIn.nextLine(); 
     System.out.println("Please enter Employee 1's hours worked:"); 
     newHoursWorked1 = conIn.nextInt(); 
     System.out.println("Please enter Employee 1's wage rate:"); 
     newWageRate1 = conIn.nextInt(); 
     worker1.setFirstName(newFirstName1); 
     worker1.setLastName(newLastName1); 
     worker1.setAddress(newAddress1); 
     worker1.setCity(newCity1); 
     worker1.setHoursWorked(newHoursWorked1); 
     worker1.setWageRate(newWageRate1); 

     //upating worker1 
     System.out.println("Please enter Employee 1's first name:"); 
     newFirstName1 = conIn.nextLine(); 
     System.out.println("Please enter Employee 1's last name:"); 
     newLastName1 = conIn.nextLine(); 
     System.out.println("Please enter Employee 1's address:"); 
     newAddress1 = conIn.nextLine(); 
     System.out.println("Please enter Employee 1's city:"); 
     newCity1 = conIn.nextLine(); 
     System.out.println("Please enter Employee 1's hours worked:"); 
     newHoursWorked1 = conIn.nextInt(); 
     System.out.println("Please enter Employee 1's wage rate:"); 
     newWageRate1 = conIn.nextInt(); 
     worker1.setFirstName(newFirstName1); 
     worker1.setLastName(newLastName1); 
     worker1.setAddress(newAddress1); 
     worker1.setCity(newCity1); 
     worker1.setHoursWorked(newHoursWorked1); 
     worker1.setWageRate(newWageRate1); 

     //upating worker1 
     System.out.println("Please enter Employee 1's first name:"); 
     newFirstName1 = conIn.nextLine(); 
     System.out.println("Please enter Employee 1's last name:"); 
     newLastName1 = conIn.nextLine(); 
     System.out.println("Please enter Employee 1's address:"); 
     newAddress1 = conIn.nextLine(); 
     System.out.println("Please enter Employee 1's city:"); 
     newCity1 = conIn.nextLine(); 
     System.out.println("Please enter Employee 1's hours worked:"); 
     newHoursWorked1 = conIn.nextInt(); 
     System.out.println("Please enter Employee 1's wage rate:"); 
     newWageRate1 = conIn.nextInt(); 
     worker1.setFirstName(newFirstName1); 
     worker1.setLastName(newLastName1); 
     worker1.setAddress(newAddress1); 
     worker1.setCity(newCity1); 
     worker1.setHoursWorked(newHoursWorked1); 
     worker1.setWageRate(newWageRate1); 

     //upating worker1 
     System.out.println("Please enter Employee 1's first name:"); 
     newFirstName1 = conIn.nextLine(); 
     System.out.println("Please enter Employee 1's last name:"); 
     newLastName1 = conIn.nextLine(); 
     System.out.println("Please enter Employee 1's address:"); 
     newAddress1 = conIn.nextLine(); 
     System.out.println("Please enter Employee 1's city:"); 
     newCity1 = conIn.nextLine(); 
     System.out.println("Please enter Employee 1's hours worked:"); 
     newHoursWorked1 = conIn.nextInt(); 
     System.out.println("Please enter Employee 1's wage rate:"); 
     newWageRate1 = conIn.nextInt(); 
     worker1.setFirstName(newFirstName1); 
     worker1.setLastName(newLastName1); 
     worker1.setAddress(newAddress1); 
     worker1.setCity(newCity1); 
     worker1.setHoursWorked(newHoursWorked1); 
     worker1.setWageRate(newWageRate1); 

     //spacer for user readability 
     System.out.println(""); 
     System.out.println("--------------------------------------------"); 
     System.out.println(""); 

     //upgrade the wage rate of the employee that has a wage rate of zero 
     //(in progress) 


     //spacer for user readability 
     System.out.println(""); 
     System.out.println("--------------------------------------------"); 
     System.out.println(""); 

     //display Employees 
     System.out.println("Employee 1"); 
     System.out.println("----------------------"); 
     System.out.println(worker1.getInfo()); 
     System.out.println("Employee 2"); 
     System.out.println("----------------------"); 
     System.out.println(worker2.getInfo()); 
     System.out.println("Employee 3"); 
     System.out.println("----------------------"); 
     System.out.println(worker3.getInfo()); 
     System.out.println("Employee 4"); 
     System.out.println("----------------------"); 
     System.out.println(worker4.getInfo()); 

     //spacer for user readability 
     System.out.println(""); 
     System.out.println("--------------------------------------------"); 
     System.out.println(""); 

     //display the Employees name and gross pay 
     System.out.println(worker1.getTotalPay()); 
     System.out.println(worker2.getTotalPay()); 
     System.out.println(worker3.getTotalPay()); 
     System.out.println(worker4.getTotalPay()); 

     //spacer for user readability 
     System.out.println(""); 
     System.out.println("--------------------------------------------"); 
     System.out.println(""); 

     //change the company name 
     String newCompanyName; 
     System.out.println("Please enter a new company name:"); 
     newCompanyName = conIn.nextLine(); 
     Employees.setCompanyName(newCompanyName); 

     //spacer for user readability 
     System.out.println(""); 
     System.out.println("--------------------------------------------"); 
     System.out.println(""); 

     //display the Employees 
     System.out.println("Employee 1"); 
     System.out.println("----------------------"); 
     System.out.println(worker1.getInfo()); 
     System.out.println("Employee 2"); 
     System.out.println("----------------------"); 
     System.out.println(worker2.getInfo()); 
     System.out.println("Employee 3"); 
     System.out.println("----------------------"); 
     System.out.println(worker3.getInfo()); 
     System.out.println("Employee 4"); 
     System.out.println("----------------------"); 
     System.out.println(worker4.getInfo()); 

     //spacer for user readability 
     System.out.println(""); 
     System.out.println("--------------------------------------------"); 
     System.out.println("Built by Rion Murphy"); 

    } 
} 

Я совершенно сбит с толку этим, нет ошибок, нет ничего. Просто не работает. Я просмотрел код, и я не вижу причин, почему он не должен работать.

+0

Какое содержимое 'newCompanyName' после этого звонка? – chrylis

+0

Вы получите подсказку, если вы посмотрите на вывод 'worker [1-3] .getInfo()'. –

+0

@chrylis Это будет '\ n'. Я думаю, вы уже ответили на такой вопрос. –

ответ

0

кода перед проблемным кодом

System.out.println("Please enter Employee 1's hours worked:"); 
newHoursWorked1 = conIn.nextInt(); 
System.out.println("Please enter Employee 1's wage rate:"); 
newWageRate1 = conIn.nextInt(); 

, который считывает int значения из стандартного ввода. Звонок nextInt() только считывает значение int, но оставляет строку \r\n. Поэтому ваш следующий nextLine() будет потреблять это и не ждать ввода.

добавить

conIn.nextLine(); 

до вашего проблемного кода, чтобы потреблять оборванный конец строки символов. Итак,

conIn.nextLine(); 

String newCompanyName; 
System.out.println("Please enter a new company name:"); 
newCompanyName = conIn.nextLine(); 
Employees.setCompanyName(newCompanyName); 
Смежные вопросы