【问题标题】:Convert Scanner next string to Int and check that the text entered is a number将 Scanner 下一个字符串转换为 Int 并检查输入的文本是否为数字
【发布时间】:2019-03-31 10:16:19
【问题描述】:

我正在尝试将 Scanner 下一个字符串转换为 Int 并检查输入的文本是否为数字,如果不是数字系统打印这不是数字但如果是数字则将其转换为 int 并除以十。

如果我不检查代码中的条件,则代码正在按预期运行。但是如果输入了文本,它正在计算字符索引值。

如果有条件,则在计算之前对每个数字进行计算,而不是对数字求和,但不计算其他字符索引值。

不检查条件:

    Scanner inputtext = new Scanner(System.in); 

    System.out.print("Mata in ett tal: ");
    String number =    inputtext.next();  //Här matar användaren in text.              
    int sum = 0;
    double number2 = 10.0;

    for (int i=0; i < number.length(); i++) { //Här omvandlas texten till tal.

    sum *= 10;
    sum += (int) number.charAt(i)-(int)'0'; 
    }   

    System.out.println("Resultat: " + sum); //Här matas talet ut.
    System.out.println("Resultat delat med 10 : " + (sum/number2)); //Här divideras talet med 10.


  }

}

检查时:

    Scanner inputtext = new Scanner(System.in); 

    System.out.print("Mata in ett tal: ");
    String number =    inputtext.next();  //Här matar användaren in text.              
    int sum = 0;
    double number2 = 10.0;

    for (int i=0; i < number.length(); i++) { //Här omvandlas texten till tal.
    char ch = number.charAt(i);

    if (ch == '0' || ch == '1' || ch == '2' || ch == '3' || ch == '4' ||  ch == '5' || ch == '6'|| ch == '7'|| ch == '8'|| ch == '9'){ 
    sum *= 10;
    sum += (int) number.charAt(i)-(int)'0';

    } else { 
    System.out.println("Detta är inte ett tal");
    break; 
    }
    System.out.println("Resultat: " + sum); //Här matas talet ut.
    System.out.println("Resultat delat med 10 : " + (sum/number2)); //Här divideras talet med 10.            
   }

}

}

我希望如果输入包含数字的字符串,则执行计算,如果添加其他字符,则告诉用户这不是数字

【问题讨论】:

  • 不清楚是什么问题。它做了什么不该做的事?您能否将“错误”输出复制粘贴到您的问题中并解释您认为它错误的原因?
  • 如果我在字符串中输入一个数字,它应该被转换为它的 int 数字,然后除以 10 并打印出数字并打印出除以 10 的数字。但是如果我输入一些东西否则在字符串中应该说这不是一个数字。现在,如果我输入 123 而不是打印 123 和 12.3,它会打印出 1、0.1、12、1.2 和 123 和 12.3。它正在为每个循环进行计算,而不是打印出 123 和 12.3。
  • 那是因为您的打印在 for 循环内 - 您忘记关闭大括号。最好使用 IDE 的“格式”按钮来获得正确的缩进 - 然后你会立即看到这一点。我将把它作为一个错字关闭。

标签: java string for-loop char int


【解决方案1】:

您可以使用 Character 中的方法:

  • Character.isDigit
  • Character.isLetter
  • Character.isLetterOrDigit

通过使用它,遍历字符串并测试所有字符是否都是数字。

【讨论】:

  • if (Character.isDigit(number.charAt(i))) { sum *= 10; sum += (int) number.charAt(i)-(int)'0';
  • 我这样做的结果是一样的
【解决方案2】:

另外,请记住“//d”代表一个数字,所以如果你希望它只扫描一个数字,你可以使用它。我知道这并不能解释太多,但我认为提醒可能会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-30
    • 2021-04-02
    • 2010-12-25
    相关资源
    最近更新 更多