字符串转整型与整型转字符串的区别_java字符串转换成整数

字符串转整型与整型转字符串的区别_java字符串转换成整数面试中被问到了这个问题,当时答得不太好,没有考虑全面,回来总结一下,如有遗漏,欢迎指正。知道C语言中有2个函数atoi()和 itoa(),但对具体实现不是很清楚,现在自己总结实现一下:字符串转整型这个情况稍微复杂一些,要考虑全面字符串开始有空格,要先判断过滤‘ 123’存在符号'+'和'-'要判断存在小数点,也就是’123.45’转为整型是123字符串超过整型int

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

面试中被问到了这个问题,当时答得不太好,没有考虑全面,回来总结一下,如有遗漏,欢迎指正。

知道C语言中有2个函数atoi()和 itoa(),但对具体实现不是很清楚,现在自己总结实现一下:

字符串转整型

这个情况稍微复杂一些,要考虑全面
  1. 字符串开始有空格,要先判断过滤‘  123’
  2. 存在符号'+'和'-'要判断
  3. 存在小数点,也就是’123.45’转为整型是123
  4. 字符串超过整型int的范围,就转为int表示最边缘的数
  5. 存在不合法的字符串‘+-123’则转为-,‘123 456’’转为123,

整型转字符串

也要考虑全面,分析各种情况
首先要考虑正负号,然后倒序(a%10)的方式转成字符串,最后判断符号,倒序输出

/*
把字符串转换成整型数  atoi()
*/
int str2int(char s[]) {
	int temp=0;
	int flag=1;
	int i=0;
	while(i<sizeof(s)&&s[i]==' ')
		i++;
	if(s[i]=='+'||s[i]=='-') {
		if(s[i]=='-')
			flag=-1;
		i++;
	}
	while( s[i]>='0'&&s[i]<='9') {
		temp=temp*10+(s[i]-'0');
		i++;
		if(temp<0) { //超出int范围-2147483648~2147483647
			temp=2147483647;
			break;
	}
	}
	return flag*temp;
}
/*
把整数转换为字符串 itoa()
*/
void int2str(int temp,char s[]) {
	int flag=1;
	if(temp<0) {
		temp=-temp;
		flag=-1;
	}
	int i=0;
	while(temp>0) {
		s[i]=temp%10+'0';
		i++;
		temp=temp/10;
	}
	if(flag==-1)
		s[i++]='-';
	s[i]='
/*
把字符串转换成整型数  atoi()
*/
int str2int(char s[]) {
int temp=0;
int flag=1;
int i=0;
while(i<sizeof(s)&&s[i]==' ')
i++;
if(s[i]=='+'||s[i]=='-') {
if(s[i]=='-')
flag=-1;
i++;
}
while( s[i]>='0'&&s[i]<='9') {
temp=temp*10+(s[i]-'0');
i++;
if(temp<0) { //超出int范围-2147483648~2147483647
temp=2147483647;
break;
}
}
return flag*temp;
}
/*
把整数转换为字符串 itoa()
*/
void int2str(int temp,char s[]) {
int flag=1;
if(temp<0) {
temp=-temp;
flag=-1;
}
int i=0;
while(temp>0) {
s[i]=temp%10+'0';
i++;
temp=temp/10;
}
if(flag==-1)
s[i++]='-';
s[i]='\0';
for(int j=i-1; j>=0; j--)
printf("%c",s[j]);
printf("\n");
}
'; for(int j=i-1; j>=0; j--) printf("%c",s[j]); printf("\n"); }


更新于2017.9.13

上述的方法s=”-2147483648″,超出整数最小范围的结果不对,做如下改进:

public class StrToInt {	public static void main(String[] args) {		// TODO Auto-generated method stub		String s=" -2147483648";		System.out.println(strToint(s));	}	 public static int strToint(String str) {		char []s=str.toCharArray();		int flag=1,sum=0;		if(s.length==0)			return 0;		int i=0;		while(i<s.length && s[i]==' ')			i++;				if(i<s.length && (s[i]=='-'||s[i]=='+')){			if(s[i]=='-')				flag=-1;			i++;		}				while(i<s.length && s[i]>'0'&&s[i]<'9')		{			sum=sum*10+(s[i]-'0');			if(sum<0 && flag==1){				return Integer.MAX_VALUE;			}			if(sum<0 && flag==-1){				return Integer.MIN_VALUE;			}			i++;		}		return flag*sum;	    }}


总结,遇到问题要先思考个1分钟,考虑清楚了再动手写,不能慌张!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/180315.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Linux Sendfile 的原理与优点[通俗易懂]

    Linux Sendfile 的原理与优点[通俗易懂]sendfile函数在两个文件描写叙述符之间直接传递数据(全然在内核中操作,传送),从而避免了内核缓冲区数据和用户缓冲区数据之间的拷贝,操作效率非常高,被称之为零拷贝。sendfile函数的定义例如以下:#include&lt;sys/sendfile.h&gt;ssize_tsendfile(intout_fd,intin_fd,off_t*offset,size_tc…

  • QT之在QML中使用C++类和对象

    QML其实是对ECMAScript的扩展,融合了Qtobject系统,它是一种新的解释性语言,QML引擎虽然由QtC++实现,但QML对象的运行环境说到底和C++对象的上下文环境是不通的,是平行的

    2021年12月29日
  • 那些年你用过最好的键盘吗_我做夫人那些年正版

    那些年你用过最好的键盘吗_我做夫人那些年正版那些年我买键盘踩过的坑分享给大家

    2022年10月16日
  • idea如何查找替换_wps表格怎么查找替换文字

    idea如何查找替换_wps表格怎么查找替换文字在平时敲代码的时候经常碰到,咦,这个变量名好像不太合适,但又写了好多这时候可以怎么办呢?Pycharm里面给我们准备了替换功能————–windows电脑—————1.Ctrl+r替换2.Ctrl+Shift+F全局查3.Ctrl+Shift+R全局替换————–MAC电脑—————1.command+F全局查找2.command+R全局替换…

  • Windows查看CUDA版本「建议收藏」

    Windows查看CUDA版本「建议收藏」方法1:进入以下目录C:\ProgramFiles\NVIDIAGPUComputingToolkit\CUDA即可安装的CUDA版本方法2:打开cmd,输入nvcc–version

  • 中国人口数据可视化_人口出生率预测

    中国人口数据可视化_人口出生率预测去年我国出生率跌破1%……全国出生人口创新低,负增长将提前,未来14年将有36776万人变老……人口下降螺旋一旦形成,一个传承了几千年的大华夏族,几百年内,即将在世界民族之林中,消亡……光看到这些标题就骇人视听。我国是世界人口大国,有14.1亿人口,出生率怎会跌破1%了呢?造成出生率下跌的原因是复杂多样的,不过出生率下跌已成事实。出生率创新低国家统计局日前发布《中国统计年鉴2021》,数据显示,2020年全国人口出生率为8.52‰,首次跌破10‰,创下了197

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号