java 有没有办法在字符串中使用>和〈?

fnatzsnv  于 2023-02-02  发布在  Java
关注(0)|答案(2)|浏览(178)

我想让用户输入一个0到180之间的数字。但变量必须是字符串。

// Saisie du nombre de jours de location
            System.out.println("Entrez le nombre de jours de location (supérieur à 0 et inférieur ou égal à 180) : ");
            nbJoursLouer = Clavier.lireString();
            while ( nbJoursLouer < "0" || nbJoursLouer > "180") {
                System.out.println("Entrée invalide !");
                System.out.println("Entrez le nombre de jours de location (supérieur à 0 et inférieur ou égal à 180) : ");
                nbJoursLouer = Clavier.lireString();
            }

当我运行并输入字母而不是数字时,我得到以下消息:

Entrez le nombre de jours de location (supérieur à 0 et inférieur ou égal à 180) : 
d
Exception in thread "main" java.lang.NumberFormatException: For input string: "d"
    at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
    at java.base/java.lang.Integer.parseInt(Integer.java:668)
    at java.base/java.lang.Integer.parseInt(Integer.java:786)
    at Tp1.main(Tp1.java:100)
knpiaxh1

knpiaxh11#

在Java中不能使用<>来表示String,这是一个编译错误。最接近的等价物是String.compareTo(String),它不会按照你的意图工作:“100”将小于“18”,因为字符串是按字典顺序排序的,Java不会像JavaScript那样“聪明”,因此,必须显式地将字符串转换为整数,请看this related question for how to use Integer.parseInt()
您共享的错误消息显示Integer.parseInt()在某个地方使用。它试图通过逐个字符阅读字符串来将其转换为数字。但当它遇到对整数无效的字符时(字母、特殊字符...),它将失败,但会出现您所看到的异常。通过使用try-catch子句,您可以对此做出React,并通过返回与代码中类似的错误消息来处理它。

int lireNombre() {
  while (true) {
    System.out.println("Entrez le nombre de jours de location (supérieur à 0 et inférieur ou égal à 180) : ");
    try {
      int value = Integer.parseInt(Clavier.lireString());
      if (value > 0 || value <= 180) {
        return value;
      } else {
        System.out.println("Ce n'est pas supérieur à 0 et inférieur ou égal à 180!");
      }
    } catch (NumberFormatException e) {  
      System.out.println("Ce n'est pas un nombre!");
    }
  }
  throw new RuntimeException("We should never have gotten here");
}
disho6za

disho6za2#

u必须将字符串转换为整数

Integer n = Integer.valueOf(nbJoursLouer);
while ( n < 0 || n > 180)

nbJoursLouer变量不是数字
只是个字母“d”
你的密码错了。

相关问题