2014-11-06 102 views
0

我的程序的目標是在提示用戶輸入每個員工的姓名,ssn和帶有循環的工資後,將缺省的100個Employee對象(但應該用更少的工作)存儲到數組中。然後,我需要輸出數組的內容。我試圖結束循環,當用戶輸入一個0時詢問名稱,但到目前爲止我的程序似乎無休止地循環。如何取消java中的for循環?

Driver類:

import java.util.Scanner; 

public class EmployeeDemo { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 

     Scanner kb = new Scanner(System.in); 

     Employee employees[]= new Employee[100]; 
     String nameTest=""; 
     for(int i=0;i<100;i++){ 
      Employee e = new Employee(); 

     System.out.println("Enter Employee name, Ssn, and salary when prompted"); 
     System.out.println("When finished type in 0's for each prompt"); 
     System.out.println("Enter Name: "); 
     nameTest=kb.next(); 
     e.setName(nameTest); 
     System.out.println("Enter Ssn: "); 
     e.setSsn(kb.next()); 
     System.out.println("Enter Salary: "); 
     e.setSalary(kb.nextDouble()); 

     if(nameTest=="0"){ 
      i=100; 
     } 
     else 
      employees[i]=e; 
     } 

     for(int x=0;x<100;x++){ 
     employees[x].toString(); 
     } 
    } 

} 

方法:

public class Employee extends Person { 

    String ssn; 
    double salary; 
    public String getSsn() { 
     return ssn; 
    } 
    public void setSsn(String ssn) { 
     this.ssn = ssn; 
    } 
    public double getSalary() { 
     return salary; 
    } 
    public void setSalary(double salary) { 
     this.salary = salary; 
    } 
    public Employee() { 
     super(); 
     // TODO Auto-generated constructor stub 
    } 
    public Employee(String initialName,String initialSsn,double initialSalary) { 
     super(initialName); 
     ssn=initialSsn; 
     salary=initialSalary; 
     // TODO Auto-generated constructor stub 
    } 
    @Override 
    public String toString() { 
     return "Name: "+getName()+" Ssn: "+getSsn()+" Salary: "+getSalary(); 
    } 
} 
+3

使用'equals'來比較字符串。 – 2014-11-06 01:49:23

+4

如果您希望用戶隨意停止,請勿使用for循環。使用while循環或do-while循環。 – 2014-11-06 01:49:55

回答

2

您應該使用equals()比較字符串,而不是==,如以下行:

if (nameTest == "0") 

爲了爲了達到你想要的目標,你可以使用以下幾行:

System.out.println("Enter Name: "); 
nameTest = kb.next(); 
if (nameTest.equals("0")) break;  // <- add this line here. 

這有隻要求你輸入0的員工姓名,而不必輸入所有三個值的優勢。

0

請按照如下

==將測試僅供參考平等。

.equals()測試如果相等。

因此,與if (nameTest.equals("0"))

0

首先,要檢查的int針對String,這是行不通的取代if (nameTest == "0")。您應該將其更改爲if (nameTest.equals("0"))。然後你可以使用break來跳出循環。無需製作i=100

0

有此代碼段中的一些問題:

if(nameTest=="0"){ 
    i=100; 
} 

你應該總是使用「等於」方法,而不是「==」當法官字符串的值相等。因此,編寫如下代碼:

if (nameTest.equals("0")) { 
    i = 100; 
}