如何判断一个字符(char)是数字还是字母

如何判断一个字符(char)是数字还是字母,第1张

根据ascii码值判断即可。由于数字,大小写字母均分别为连续存储,所以只需要与对应的最大最小值比较即可确定字符类型。
代码如下:
1
2
3
4
5
6
7
8
9
10
11
12

#include <stdioh>
int main()
{
char c;
c = getchar();//读取一个字符。

if(c >='0' && c<='9')printf("是数字\n");
else if(c >='a' && c<='z' || c >='A' && c<='Z'))printf("是字母\n");
else printf("是特殊字符\n");

return 0;
}

if(scanf("%d",&h)!=1)
printf("it's
not
a
number!\n");
因为scanf是从缓存中读取输入的数据如果你输入的不是数字,就会返回0,如果是数字就会返回1;
一般人不知道scanf还有返回值,就可以看看头文件中scanf的定义了。
其实我还有一个更好的办法,你输入的不是数字就要他重新输入,直到输入的是数字为止,这样是最好的写法。
程序如下:
#include
int
main()
{
int
h;
while(!scanf("%d",&h))
{
fflush(stdin);
printf("\n输入错误,请重新输入:\n");
}
}
其中fflush(stdin)是清理缓存,就像我上面说的scanf是从缓存取数的,

Java里要判断某个字符串是不是整个就是一个数字其实蛮简单的。一种办法是用parseXXX()看会不会抛出异常,没抛异常的就是数字。例如数字不大的时候可以用IntegerparseInt(),大一点的时候LongparseLong(),浮点数可以用DoubleparseDouble(),等。数字很大的时候用new BigDecimal()看看抛不抛异常,也一样。要不然开个Scanner看看hasNextXXX(例如hasNextInt之类)是否true也行。或者是用正则表达式,看看strmatches(regex)是不是返回true就行。其中regex的部分,对非负整型用"\\d+",有可选的负号的用"-\\d+",可选正负号的用"(:+|-)\\d+",非负的浮点数用"\\d+(:\\\\d+)",……

#include <stdioh>
main()
{
char ch[200];
int i=0,j;
while((ch[i]=getchar())!='\n')
i++;
for(j=0;j<i;j++)
if(ch[j]<'0' || ch[j]>'9')
{
printf("该字符串不是纯数字。\n");
break;
}
if(j==i)
printf("该字符串是纯数字。\n");
}

用java的异常机制,不仅可以判断是否是数字,还可以判断整数或者小数:
public void checkInt(String bh){
try{
int num = IntegerparseInt(bh);//将输入的内容转换成int
Systemoutprintln("是整数:"+num);//是整数
}catch (NumberFormatException e) {//转换成int类型时失败
try{
double d =DoubleparseDouble(bh);//转成double类型
Systemoutprintln("是小数:"+d);//是小数
}catch (NumberFormatException e2) {//转成double类型失败
Systemoutprintln("不是数字");
}
}
}

//这个你可以用正则表达式来筛选,其实你明白其中道理就可以了打个比方!
//char a='0';
//char b=0;
这个二个是不一样的,怎么来比较这个不一样,可以用个偷懒的办法,都加0就可以实现了!
a+0=48;
b+0=0;
所以可以结论出,char类型:'0','1','2''9';
可以用(48--57)这个范围来判断他们是 数字字符 还是,其他字符!
而 char a=0,b=1,c=2;他们加0还是自身,就可以用 (0---9)这个范围来判断!
其他其实a---z或者A--Z都有自己的范围,我就不在例举了,道理其实很简单!
我用一个简单的判断,遍历一个数组,你看看吧!
public class 字符是数 
{
public static void main(String[] args) 
{
Systemoutprintln("\n\t\t==========java中 怎么判断一个字符是数字!==========\n");
init();
}//初始化!
private static void init()
{
char[] arr={'0','9','a',0,'b',9,'W'};
for (int i=0;i<arrlength;i++)
{
if((arr[i]+0>=48)&&(arr[i]+0<=57))
Systemoutprintln("第"+(i+1)+"个是数字字符");
else if((arr[i]+0>=0)&&(arr[i]+0)<=9)
Systemoutprintln("第"+(i+1)+"个是纯数字!");
else
Systemoutprintln("第"+(i+1)+"个是其他字符");
}

}
}

假如对A1单元格做判断,在B1输入 =if(or(code(A1)<32,code(A1)>127),"文字","数字")
即可实现判断A1单元格是否是 文字 还是 数字

if str co '0123456789' write: / str,'中全是数字!' 我说的不是这个意思, 我的意思是: 只要字符串中有非数字的,就做出判断。 你这种写法的意思是:如果字符串中包括了'0123456789'才给出判断。 不是我的意思。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13404711.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-29
下一篇 2023-07-29

发表评论

登录后才能评论

评论列表(0条)

保存