2014-11-06 75 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; 
}