【问题标题】:Having trouble with displaying boolean in Java在 Java 中显示布尔值时遇到问题
【发布时间】:2021-12-22 08:26:39
【问题描述】:

这是我的第一个布尔练习。无论是国产车还是进口车,我都需要显示 car_Type 的输出。主类已经编译成功,但是当我运行它并输入输入时,它显示“线程中的异常”main“java.util.InputMismatchException”。这是主要的类:

import java.util.Scanner;
public class CarApp
{
public static void main(String[] args)
{
  //declaration
  Scanner input = new Scanner(System.in);
  
  String model, brand;
  double price;
  boolean type;
  
  Car c = new Car();
  
  System.out.println("Enter a car Model : ");//X70/Starex
  model = input.nextLine();
  System.out.println("\nEnter a car Brand : ");//Proton/Hyundai
  brand = input.nextLine();
  System.out.println("\nEnter the car price : RM");//95000.00/170000.00
  price = input.nextDouble();
  System.out.println("\nEnter the car brand [national/imported] : ");//national/imported car
  type = input.nextBoolean();
     
  //output
  System.out.println("Car Model : "+model);

  }
}

另外,如果你想检查错误,这里是汽车类:

public class Car
{
String car_Model;
String car_Brand;
double car_Price;
boolean car_Type;

public Car()
{
car_Model = " ";
car_Brand = " ";
car_Price = 0.0;
car_Type = true;
}

public Car(String cm, String cb, double cp, boolean ct)
{
car_Model = cm;
car_Brand = cb;
car_Price = cp;
car_Type = ct;
}

void SetCar_Model(String cm){
   car_Model = cm;
}
void SetCar_Brand(String cb){

 car_Brand = cb;
}
void SetCar_Price(double cp){
 car_Price = cp;
}
void SetCar_Type(boolean ct){
car_Type = ct;
}

String GetCar_Model()
{
return car_Model;
}
String GetCar_Brand()
{
return car_Brand;
}
double GetCar_Price()
{
  return car_Price;
}
Boolean GetCar_Type()
{
  return car_Type;
}
 public String toString()
{
  return "Car Model : " +car_Model + "\nCar Brand : " +car_Brand + "\nCar Price : " +car_Price + "Car Type : " +car_Type;
}
}

这是输入:

Enter a car Model :
X70
Enter a car Brand :
Hyundai
Enter the car price : RM
95000.00
Enter the car brand [national/imported] : 
national

点击回车后显示:

Exception in thread "main" java.util.InputMismatchException

at java.base/java.util.Scanner.throwFor(Scanner.java:939)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextBoolean(Scanner.java:1893)
at CarApp.main(CarApp.java:23)

感谢您的帮助!

【问题讨论】:

  • “然后输入” 你到底在输入什么?请edit您的问题包含示例输入。
  • input.nextBoolean() 在输入中期望 truefalse,而不是像 national/imported 这样的字符串。

标签: java boolean output


【解决方案1】:

Java boolean 数据类型,只能取值 truefalse

【讨论】:

    【解决方案2】:

    national 无法解析为布尔值。您必须根据自己的逻辑自行解析。您可以将该字段命名为例如isNational,如果用户输入了national,则将其设置为true,如果输入了imported,则将其设置为false。在您的 toString 方法中,您可以根据 isNational 的布尔值返回“导入”或“国家”,就像这样

    isNational ? "national" : "imported"
    

    这称为ternary operator

    还要考虑如果用户没有输入这两个选项中的任何一个会发生什么。

    您不需要在方法顶部声明所有变量,然后在下面分配它们。大多数情况下,如果分配哪个值是确定性的,您可以在声明时分配它。

    最后:Java 字段通常用camelCase 编写。看看 Java 命名约定here

    【讨论】:

      猜你喜欢
      • 2021-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-09
      • 1970-01-01
      • 1970-01-01
      • 2021-05-14
      • 1970-01-01
      相关资源
      最近更新 更多