Java不可比较的数据类型char和String

6
当我运行Javac时,它告诉我在中 incomparable data types char and String。
while(responseChar == "y")

不确定该怎么修改以解决这个错误

import java.util.Scanner;
public class UseOrder
{
public static void main(String[] args)
{

    int answer, num, q;
    String name, response;
    double p;
    char responseChar;
    Scanner keyboard = new Scanner(System.in);

    Order order1 = new Order();
    order1.setCustomerName();
    order1.setCustomerNum();
    order1.setQuantity();
    order1.setUnitPrice();
    order1.computePrice();
    order1.displayInfo();

    keyboard.nextLine(); 
    System.out.println("Do you need the shipping and handling service?");
    System.out.println("Enter y or n :");
    response = keyboard.nextLine();
    responseChar = response.charAt(0);
    while(responseChar == "y")
    {
        ShippedOrder order2 = new ShippedOrder();
        order2.getCustomerName();
        order2.getCustomerNum();
        order2.getQuantity();
        order2.getUnitPrice();
        order2.computePrice();
        order2.displayInfo();
    }
}
}
3个回答

20

要定义一个字符文字,使用单引号:'。双引号定义字符串文字。

while(responseChar == 'y')

3

如果需要,您可以使用大写的 C Character 类将您的 char 转换为一个 String

String converted = Character.toString(responseChar); 
while(converted.equalsIgnoreCase("y"))
{
  // ...
}

但是这个版本比Jeffrey建议的直接比较要冗长得多。


非常感谢您的快速回复。当我将“”更改为“”时,它立即编译通过了。但是,我遇到了一个新问题。当我运行程序并在运输和处理问题中输入y时,它只是不断重复以下内容: 客户名称:null 客户编号:0 订单数量:0 订单价格:0 运费价格4.0 总价:0 - Nate
将一些实际值设置给对象,例如order1.setCustomerName("John Doe"); 并且实现一些机制来打破while循环。如果您只想打印一次,则可以在while块的末尾添加break;,即在order2.displayInfo();之后。 - Jimmy
@Nate 你应该将 Order 对象传递给 ShippedOrder 构造函数,这样你就可以获取上面设置的所有值了:ShippedOrder order2 = new ShippedOrder(order1); - Hunter McMillen

1

不要用 "y",而是用 'y'"" 表示字符串。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接