ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java 判断一行输入是否为有效数字

2022-07-01 09:35:12  阅读:175  来源: 互联网

标签:java charAt 有效数字 小数点 System int str 输入 out


//使用原生的方式来判断一个字符串是否是一个有效的数字
public void checkNumber(String str){
int count = 0;

//没有输入任何东西
if(str.length() == 0){
System.out.println("你什么都没输入!");
return;
}

//字符串长度为1
else if(str.length() == 1){
if((int)(str.charAt(0)) < 48 || (int)(str.charAt(0)) > 57){
System.out.println("你输入的不是数字!只有1位还输错,什么鬼?");
return;
}
}

//输入的长度大于等于2位
else {
for(int i=0; i<str.length(); i++) {
//若出现数字、小数点和负号以外的字符,判定为非数字
if (((int) (str.charAt(i)) < 48 || (int) (str.charAt(i)) > 57) && (int) (str.charAt(i)) != 45 && (int) (str.charAt(i)) != 46) {
System.out.println("你输入的不是一个数字!字符串中出现了数字、小数点和负号以外的字符!");
return;
}
}
//第1位是小数点
if((int)(str.charAt(0)) == 46){
System.out.println("你输入的不是一个数字!第1位就是小数点,什么鬼?");
return;
}
//第1位是负号
else if((int)(str.charAt(0)) == 45){
//第2位是负号
if((int)(str.charAt(1)) == 45){
System.out.println("你输入的不是一个数字!前两个字符都是负号!");
return;
}
else{
//原字符串去掉第一位
str = str.substring(1);
checkNumber(str);
return;
}
}

//第1位是0
else if((int)(str.charAt(0)) == 48) {
//第2位不是小数点
if ((int) (str.charAt(1)) != 46) {
System.out.println("你输入的不是一个数字!第一位是0,但是第二位不是小数点!");
return;
}
//第1位是0,第2位是小数点,但后面没数字了
else if ((int) (str.charAt(1)) == 46 && str.length() == 2) {
System.out.println("你输入的不是一个数字!第一位是0,第二位是小数点,但没有第3位了!");
return;
}
//第1位是0,第2位是小数点,第3位还有字符
else {
for (int i = 2; i < str.length(); i++) {
if ((int) (str.charAt(i)) < 48 || (int) (str.charAt(i)) > 57) {
System.out.println("你输入的不是一个数字!第一位是0,第二位是小数点,但第3位之后出现了非数字字符!");
return;
}
}
}
}

//第一位是1-9的数字
else {
for(int i=1; i<str.length(); i++) {
//如果第2位之后出现了非数字
if ((int) (str.charAt(i)) < 48 && (int) (str.charAt(i)) > 57) {
//如果第2位之后出现了不是小数点的非数字
if((int) (str.charAt(i)) != 46) {
System.out.println("你输入的不是一个数字!第二位以后出现了数字和小数点之外的字符!");
return;
}
//如果第2位之后发现小数点
else {
count++;
if(count == 2) {
System.out.println("你输入的不是一个数字!第二位以后出现了至少两个小数点!");
return;
}
}
}
}
}
}

//以上判定不是有效数字的情况都未发生
System.out.println("Very Good!你输入的是一个有效数字!");
}
}

标签:java,charAt,有效数字,小数点,System,int,str,输入,out
来源: https://www.cnblogs.com/win-again/p/16433383.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有