我的程序的目标是在提示用户输入每个员工的姓名,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();
}
}
答案 0 :(得分:2)
您应该使用equals()
来比较字符串而不是==
,如下所示:
if (nameTest == "0")
为了实现你想要的东西,你可以使用以下几行:
System.out.println("Enter Name: ");
nameTest = kb.next();
if (nameTest.equals("0")) break; // <- add this line here.
这样做的好处是只需要为员工姓名输入0
,而不是必须输入所有三个值。
答案 1 :(得分:0)
请按照以下说明
==
将仅测试引用相等。
.equals()
测试值,如果相等。
所以用if (nameTest == "0")
if (nameTest.equals("0"))
答案 2 :(得分:0)
首先,您正在针对int
检查String
,这将无效。您应该将其更改为if (nameTest.equals("0") )
。然后你可以使用break
来摆脱循环。无需制作i=100
。
答案 3 :(得分:0)
此代码段中存在一些问题:
if(nameTest=="0"){
i=100;
}
在判断String的值相等时,应始终使用“equals”方法而不是“==”。因此,编写如下代码:
if (nameTest.equals("0")) {
i = 100;
}