如何在java中取消for循环?

时间:2014-11-06 01:47:22

标签: java arrays loops

我的程序的目标是在提示用户输入每个员工的姓名,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();
    }
}

4 个答案:

答案 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;
}