将Scanner下一个字符串转换为Int并检查输入的文本是否为数字

问题描述 投票:0回答:2

我正在尝试将Scanner下一个字符串转换为Int并检查输入的文本是否为数字,如果不是数字系统打印,则这不是数字,但如果数字转换为int并除以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.

    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.            
   }

}

}

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

java string for-loop char int
2个回答
1
投票

您可以使用Character中的方法:

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

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.