我在使用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");
}
}
程序执行一次并且无法正确循环。有什么问题?
答案 0 :(得分:5)
您无法将字符串与==。
进行比较使用
while(response.equals("1"));
答案 1 :(得分:3)
尝试:
response.equals("1")
应用于字符串的 ==
仅返回true
,如果它是同一个对象。
答案 2 :(得分:3)
此response == "1"
不是如何比较Java中的String
。
您实际上想要使用response.equals("1")
,它将比较两个String
的内容,而不是内存位置。