【剣指Offer学習】【題49:文字列を整数に変換】
タイトル:タイトル記述は1つの文字列を1つの整数に変換する(Integer.valueOf(string)機能を実現するが、stringが数字の要求に合致しない場合は0を返す)ことを記述し、文字列を使用して整数を変換できないライブラリ関数を要求する.値が0または文字列が正当な値でない場合は0を返します.入力記述:数値アルファベット記号を含む文字列を入力し、空の出力記述を使用できます.合法的な数値表現であれば、数値を返します.そうでなければ、0を返します.
構想:1、まずシンボルビットがあるかどうかを判断し、ある場合は文字列の2番目の文字から整数に変換する.なければ、最初から転化します.2、変換の過程で、文字列の中に「*」、「&」などの非合法な文字が存在するかどうかを判断する.3、文字から「0」を引くと、対応する整数が得られます.4.戻り結果注意符号ビットの正負.
プログラム:
構想:1、まずシンボルビットがあるかどうかを判断し、ある場合は文字列の2番目の文字から整数に変換する.なければ、最初から転化します.2、変換の過程で、文字列の中に「*」、「&」などの非合法な文字が存在するかどうかを判断する.3、文字から「0」を引くと、対応する整数が得られます.4.戻り結果注意符号ビットの正負.
プログラム:
import java.util.Scanner;
public class subject49 {
public static int StrToInt(String str) {
if(str == null || str.length() == 0) {
return 0;
}
int flag = 1;// ,1 ,0 ;
if(str.charAt(0) == '+') {
str = str.substring(1, str.length());
}else if(str.charAt(0) == '-') {
str = str.substring(1, str.length());
flag = 0;
}
char[] ch = str.toCharArray();
int result = 0;
for(int i = 0; i < str.length(); i ++) {
if(ch[i] > '9' || ch[i] < '0') {
return 0;
}
result = result * 10 + ch[i] - '0';
}
return flag > 0 ? result : -result;
}
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
String str = sc.next();
System.out.println(StrToInt(str));
}
}