【剣指Offer学習】【題49:文字列を整数に変換】


タイトル:タイトル記述は1つの文字列を1つの整数に変換する(Integer.valueOf(string)機能を実現するが、stringが数字の要求に合致しない場合は0を返す)ことを記述し、文字列を使用して整数を変換できないライブラリ関数を要求する.値が0または文字列が正当な値でない場合は0を返します.入力記述:数値アルファベット記号を含む文字列を入力し、空の出力記述を使用できます.合法的な数値表現であれば、数値を返します.そうでなければ、0を返します.
構想: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));
	}
}