java字符串轉(zhuǎn)化整型問題
2016年JAVA認(rèn)證考試已經(jīng)在緊張的備考中了,在后期中考來臨之際我們將會(huì)第一時(shí)間為廣大考生發(fā)布中考時(shí)間安排,請(qǐng)廣大考生隨時(shí)關(guān)注本站。下面是JAVA認(rèn)證復(fù)習(xí)備考資料——java 字符串轉(zhuǎn)化整型問題。
public class StringParesInteger {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(Integer.MIN_VALUE);
System.out.println(Integer.MAX_VALUE/10);
System.out.println(pareseInt("="));
}
/**本題考查的主要是邊界條件
* 1.穿入的字符串是否為空
* 2.字符串的首位是否為(+、-)
* 3.字符中是否有非法字符
* 4.穿入的字符串是否超過了整數(shù)的最大值(Integer.MAX_VALUE(2147483647)/Integer.MIN_VALUE(-2147483648))
*
* @param data
* @return
*/
public static int pareseInt(String data){
/*
* 判讀穿傳入的字符串是否為空
*/
if(data==null||data.length()==0){
throw new NullPointerException("data is null");
}
int index=0;
/**
*
*/
//是否為負(fù)數(shù)
boolean isPositive=true;
// 臨界值
int limit = 0;
//取出字符串的第一位
char first=data.charAt(0);
//第一位是負(fù)數(shù)的情況下
if(first=='-'){
isPositive=false;
index++;
//設(shè)置整形最小的`負(fù)數(shù)(-2147483648)
limit=-Integer.MIN_VALUE;
}
//第一位是整數(shù)的情況下
if(first=='+'){
isPositive=true;
//設(shè)置最大的正數(shù)是(2147483647)
limit=Integer.MAX_VALUE;
index++;
}
//設(shè)置比較的邊界值(214748364)
int maxLimit=Integer.MAX_VALUE/10;
int length=data.length();
int result=0;
while(index'0'&&ch<'9'){
//先判斷原來的值是否大于比較的臨界值
if(result>maxLimit){
throw new RuntimeException("整數(shù)越界了");
}
// 判斷當(dāng)前位的值+ch的值是否》整數(shù)的最大值
if(result*10>limit-(ch-'0')){
System.out.println("result-->"+(result*10));
System.out.println("max----->"+(Integer.MAX_VALUE));
System.out.println("result-->"+(Integer.MAX_VALUE-(ch-'0'))+" ch="+(ch-'0'));
throw new RuntimeException("數(shù)組越界了s ");
}
index++;
result=result*10+(ch-'0');
}else{
throw new RuntimeException("不是整數(shù) ");
}
}
//三目運(yùn)算符
return isPositive?result:-result;
}
}
【java字符串轉(zhuǎn)化整型問題】相關(guān)文章:
Java認(rèn)證基礎(chǔ)知識(shí):java字符串轉(zhuǎn)化整型問題09-30
sun認(rèn)證java關(guān)于字符串處理技巧11-08
Java字符串反轉(zhuǎn)和Eclipse代碼自動(dòng)提示09-21
sun認(rèn)證考試java關(guān)于字符串處理技巧09-21
JAVA十六進(jìn)制與字符串的轉(zhuǎn)換方法09-13
Java多線程同步問題09-21