繁体   English   中英

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

[英]Convert Scanner next string to Int and check that the text entered is a number

我正在尝试将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.            
   }

}

}

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

您可以使用Character中的方法:

  • 字符是数字
  • 字符是字母
  • Character.isLetterOrDigit

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

另外,请记住,“ // d”代表一个数字,因此,如果您只想扫描一个数字,则可以使用该数字。 我知道这并不能说明太多,但我认为提醒可能会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM