我的程序的目标是在循环提示用户输入每个员工的姓名、ssn 和工资后,将默认的 100 个 Employee 对象(但应该更少)存储到一个数组中。然后我需要输出数组的内容。当用户在要求输入名称时输入 0 时,我试图结束循环,但到目前为止我的程序似乎无休止地循环。
驱动程序类别:
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();
}
}
最佳答案
您应该使用 equals()
来比较字符串,而不是 ==
,如以下行所示:
if (nameTest == "0")
为了实现您想要的目标,您可以使用以下内容:
System.out.println("Enter Name: ");
nameTest = kb.next();
if (nameTest.equals("0")) break; // <- add this line here.
这样做的优点是只要求您输入 0
作为员工姓名,而不需要输入所有三个值。
关于java - java中如何取消for循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26770419/