-1

while在java中的语句有问题。这是我的代码(我对此很陌生)...

import java.text.DecimalFormat;
import java.util.Scanner;

public class ElecticBillLab6 {
    public static void main(String[] args) {

    int accountNumber;
    int customerName;
    int oldMeterReading;
    int newMeterReading;
    int usage;
    double charge = 0;
    String name;
    String lastName;
    String response;
    final double baseCharge = 5.00;
    int yes = 1;
    int no = 2;
    boolean YesResponse;

    Scanner keyBoard = new Scanner(System.in);

    do {

        System.out.print("Customer's first Name? ");
        name = keyBoard.next();
        System.out.print("Customer last name?");
        lastName = keyBoard.next();
        System.out.print("Enter customer account number ");
        accountNumber = keyBoard.nextInt();
        System.out.print("Enter old meter reading ");
        oldMeterReading = keyBoard.nextInt();
        System.out.print("Enter new meter reading ");
        newMeterReading = keyBoard.nextInt();

        usage = (newMeterReading - oldMeterReading);

        if (usage < 301) {
            charge = 5.00;

        } else if (usage < 1001) {
            charge = (5.00 + (.03 * (usage - 300)));
        } else if (usage > 1000) {
            charge = (35.00 + ((usage - 1000) * .02));
        }

        DecimalFormat df = new DecimalFormat("$,###.00");
        System.out.println("PECO ENERGY");
        System.out.println("Customer Account Number " + accountNumber);
        System.out.println("Name on Account " + name + lastName);
        System.out.println("Last Month Meter Reading: " + oldMeterReading);
        System.out.println("This Month Meter Reading: " + newMeterReading);
        System.out.println("Current Usage : " + usage);
        System.out.println("Your current month charges are "
                + (df.format(charge)));

        System.out
                .println("Do you want to enter another customer's meter reading?");
        System.out.print("Enter 1 for yes or 2 for no.");
        response = keyBoard.next();

    } while (response == "1");

}
}

该程序只执行一次,但不能正确循环。怎么了?

4

3 回答 3

5

你不能用 == 比较字符串。

利用

while(response.equals("1"));
于 2013-04-16T01:00:57.400 回答
3

尝试:

response.equals("1")

==应用于字符串仅true当它是同一个对象时才返回。

于 2013-04-16T01:00:50.917 回答
3

response == "1"不是String在 Java 中比较 s 的方法。

您实际上想要使用response.equals("1")它,它将比较两个Strings 的内容,而不是内存位置。

于 2013-04-16T01:01:17.277 回答