JAVA里内容是纯数字的字符串String或字符char可不可以和数做数学运算啊。。 。 如果不能

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA里内容是纯数字的字符串String或字符char可不可以和数做数学运算啊。。 。 如果不能相关的知识,希望对你有一定的参考价值。

JAVA里内容是纯数字的字符串String或字符char可不可以和数做数学运算啊。。 。
如果不能那怎么把字符串里的全部或特定位置数字导出来成可运算的数据类型。。。

不可以运算啊 你得弄成整型啊
比如 String str = "123";
你想把2拿出来参与数学运算的话 可以这样 char c = str.charAt(1); int d = c-'0'; d救赎数字2了、
如果是char类型的话 比如 char c = '6';你想把6本身这个值进行数学运算,可以这样
int d = c -'0';相当于 int d = '6' -'0';这样 d 就是整型的数字6追问

d=c-'0'是什么意思啊,char可以运算?

追答

‘0’表示的是48 '6'表示的是54 所以'6'-'0'相当于是54-48 得到的是int值 6 这个6就是int类型 能够参与数学运算

追问

虽然不懂你说什么。。。

私信了

追答

大哥,char类型在内存中是16位无符号整数,所以在写一个char类型的的数据时候可以
char c = 48; char c = '0'; 这2个你去打印的话 都打印出来的是字符0,Java采用的unicode编码,字符'0'这个字符所对应的unicode编码就是48,char类型做运算的时候 是隐式转换为int进行运算
比如 你看到的 '6'-'0' 实际是把字符6所对应的那个unicode值,也就是54拿过去,字符'0'是48
所以他们相减 时间上是 54-48 得到的是个int类型的值 6 !

追问

提出来的c是2,不是6,你要说2我早明白了。。。

追答

。。。。。这是你自己掌握的不扎实导致的吧。。。。

追问

刚开始学。。。

追答

你自学啊 ?自学有点老火

追问

有老师就不来百度了→_→

http://tieba.baidu.com/p/3288580974?lp=5028&mo_device=1&pn=0&

http://tieba.baidu.com/p/3288580974?lp=5028&mo_device=1&pn=0&

追答

我之前面试了一个自学一年的 东西不牢靠 很多知道说不出来 脑子里概念不清晰 容易犯晕

追问

我应该用不了一年吧。。。会背概念也不一定理解

那个帖子给我解释一下吧⊙▽⊙

追答

帖子都是404 2个都是

追问

http://tieba.baidu.com/p/3288580974?fr=wap&tb_device=pc&ie=utf-8

http://tieba.baidu.com/p/3288580974?pid=57278101933&cid=0#57278101933

上面的是手机的网页,最后一个应该没问题

参考技术A 可以啊 string转int

int i;
String s = "1234";
第一种方法:i=Integer.parseInt(s);
第二种方法:i=Integer.valueOf(s).intValue();

i是个int型数据,可以做运算追问

本回答被提问者采纳
参考技术B 纯数字的字符串可以先转换成整形再运算。如:
String s = "123";
int num = Integer.parseInt(s);

这样就可以拿num运算了追问

那个方法integer.XXX是那个类里的啊

追答

你直接在代码里面输入就行,不用导入类的要大写I开头的Integer

追问

参考技术C 这个真不能不能的不能的

c++如何将string字符串按原内容转换为整型int数据 (C++如何判断某字符串数据是否是纯数字)

使用cstring库中的atoi函数可以轻松实现:

// 需要包含头文件:#include<cstring>

string str1 = "testify";
int i1 = atoi(str1.c_str());
cout<<i1<<endl; //输出结果:0 (int型)

string str2 = "10086";
int i2 = atoi(str2.c_str());
cout<<i2<<endl; //输出结果:10086(int型)

string str3 = "a10086";
int i3 = atoi(str3.c_str());
cout<<i3<<endl;//输出结果:0(int型)

string str4 = "88aaaa";
int i4 = atoi(str4.c_str());
cout<<i4<<endl;//输出结果:88(int型)
	

需要注意的是通过 atoi( var.c_str()) 转化的结果:

  1. 如果var是由纯数字构成的字符串,那么将返回一个整型的,var原内容的数据;
  2. 如果var是一个以非数字开头的字符串,那么将返回0;
  3. 如果var的开头n个字符为数字但后续字符为非数字,那么将返回从开头到最后一个连续的数字字符组成的整形数据;

故也可以用atoi来判断某个字符串数据是否是纯数字。

以上是关于JAVA里内容是纯数字的字符串String或字符char可不可以和数做数学运算啊。。 。 如果不能的主要内容,如果未能解决你的问题,请参考以下文章

java密码正则表达式(可以是纯数字,也可以是纯字母,也可以是数字+字母,6-16 位)

6到16位数字不能是纯数字,字母或字符怎么设?

java 正则怎么匹配符号加中文

java密码正则表达式(可以是纯数字,也可以是纯字母,也可以是数字+字母,6-16 位)

java 正则匹配字符是不是为纯数字

C++string中怎样从字符串里截取出字符