做......虽然没有循环

时间:2013-04-16 00:57:15

标签: java do-while

我在使用java中的while语句时遇到问题。这是我的代码(我对此很新)...

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");

}
}

程序执行一次并且无法正确循环。有什么问题?

3 个答案:

答案 0 :(得分:5)

您无法将字符串与==。

进行比较

使用

while(response.equals("1"));

答案 1 :(得分:3)

尝试:

response.equals("1")
应用于字符串的

==仅返回true,如果它是同一个对象。

答案 2 :(得分:3)

response == "1"不是如何比较Java中的String

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