【问题标题】:Java Incomparable Data types char and StringJava 无法比较的数据类型 char 和 String
【发布时间】:2017-02-24 11:38:24
【问题描述】:

当我运行 Javac 时,它告诉我在

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();
    }
}
}

【问题讨论】:

    标签: java


    【解决方案1】:

    要定义字符文字,请使用单引号:'。双引号定义字符串字面量。

    while(responseChar == 'y')
    

    【讨论】:

      【解决方案2】:

      您可以选择使用大 C Character 类将您的 char 转换为 String

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

      但这个版本比 Jeffrey 建议的字面比较详细得多

      【讨论】:

      • 感谢您的快速回复。一旦我将“更改为”,它就会编译。然而,我确实遇到了一个新问题。当我运行程序并为运输和处理问题输入 y 时,它只是不断重复客户名称:null 客户编号:0 订单数量:0 订单价格:0 发货价格 4.0 总价格:0
      • 为对象设置一些实际值,例如 order1.setCustomerName("John Doe");并且还实现了一些机制来打破 while 循环。如果您希望只打印一次,您可以添加 break;在 while 块的末尾。即order2.displayInfo();之后
      • @Nate 你应该将Order 对象传递给ShippedOrder 构造函数,这样你就可以获得上面设置的所有值:ShippedOrder order2 = new ShippedOrder(order1);
      【解决方案3】:

      而不是"y" 这样做'y'"" 表示字符串。

      【讨论】:

        猜你喜欢
        • 2017-02-26
        • 2018-12-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-30
        • 2011-08-25
        相关资源
        最近更新 更多