簡體   English   中英

如何取消Java中的for循環?

[英]How do I cancel a for loop in java?

我的程序的目標是在循環提示用戶輸入每個員工的姓名,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作為員工姓名,而不必輸入所有三個值。

請按照以下步驟

==將僅測試引用相等性。

.equals()測試是否相等。

因此,將if (nameTest == "0")替換為if (nameTest.equals("0"))

首先,您要根據String檢查一個int ,它將不起作用。 您應該將其更改為if (nameTest.equals("0") ) 然后,您可以使用break打破循環。 無需使i=100

此代碼段中存在一些問題:

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

當判斷String的值相等時,應始終使用“等於”方法而不是“ ==”。 因此,編寫如下代碼:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM