我的java面试编程题——记录每一天(19.4.17.1)
作者:互联网
//日期:19.4.17
//作者:***
//功能:我的面试编程题目练习二十二
//======================================================
//问题描述:给定字符串String,转换成对应的int数值,知道遇到非数字字符结束。
//======================================================
//思路方法:这个问题,乍一看很简单,但是仔细看看,会发现其中有很多问题;
//首先注意:String如果首字符为 + 或者 - 是合法的,
//其次,才需要考虑,在遍历过程中出现非数字化字符的时候,不合法
//还有就是,题目要求就是转化成int。所以一定要考虑int的范围问题。
//=======================================================
//最后,考虑到一个细节问题,那就是 char的内存处理是对应的ascII的十进制整形数值
//也就是说 'a'+1=='b'是成立的
//这个问题相信学过c语言的朋友都能理解。
//-46541654654
package com.*********;
import java.util.*;
public class Practice {
//主函数,作为程序测试代码的入口
public static void main(String args[])
{
Practice p =new Practice();
p.run();
}
//封装客户端交互代码
public void run()
{
Scanner scan = new Scanner(System.in);
System.out.println("请输入要进行操作的字符串:");
String s = scan.nextLine(); //获取控制台输入合法信息
scan.close();
System.out.println("转化结果为:"+ this.getIntOfString(s));
}
//封装实际处理的函数操作
public int getIntOfString(String str)
{
if(str == null || str.length() == 0) return 0;
char[] char_array = str.toCharArray();
long result = 0; //为了处理越界问题,设置为long
int sign = 1; //符号位,默认为1
int index = 0; //标记位,判断首字符后,查看从什么位置开始循环
if(char_array[0] == '+')
{
sign = 1;
index = 1; //处理时候,array[0]就不需要在次处理了
}else if(char_array[0] == '-')
{
sign = -1;
index = 1;
}
for(; index<str.length(); index++)
{
int i = char_array[index] - '0'; //细节记录
if(i >= 0 && i<= 9)
{
result = result *10 + i;
}else
break;
}
result *= sign; //注意别忘记符号
if(result > Integer.MAX_VALUE || result < Integer.MIN_VALUE) return 0;
return (int)result;
}
}
标签:19.4,index,java,String,int,char,17.1,array,public 来源: https://blog.csdn.net/romantic_jie/article/details/89363652