atoi

1510 ワード

さっき左耳のネズミの微博を見ました
今のプログラマーは、atoi()さえ何なのか分からないので、大丈夫です.じゃ、atoi()と呼ばないでStrToInt()と呼んでいますが、ASCIIコードさえ知らない人が多いことに気づきました.大丈夫です.教えてあげます.しかし、なぜこんなに多くの人がこのような簡単なプログラムさえうまく書けないのか(長年の仕事の経験を持っている人も含む).「技術より怖いのは、不合格のプログラマーたちがこの技術を使っていることだ」.
http://weibo.com/1401880315/AaNkykg6J
--------------------
ついでに1つ書きました.思ったより難しかったです.
そしてInteger.parseIntのソースコードを見てみると、ほぼ一致しています.
もちろん、私のは簡略化版で、Integer.parseIntは複雑です.
--------------------

	public static int atoi(String s){
		int r = 0;

		boolean isMinus = false;
		
		if(s.length()==0){
			return 0;
		}
		
		int idx = 0;
		if(s.charAt(0)=='-' ){
			idx++;
			isMinus = true;
		}else if(s.charAt(0)=='+' ){
			idx++;
		}

		if(s.length()<=idx){
			return 0;
		}
		
		for(int i=idx; i<s.length(); i++){
			char c = s.charAt(i);
			if(c<'0' || c>'9'){
				break;
			}
			int t = c - '0';
			r = r * 10 + t;
		}
		
		if(isMinus){
			r = -r;
		}
		
		return r;
	}
	
	public static void testAtoi(){
		String[] ss = {
				"asd",
				"123983asd",
				"-123asd",
		};
		Integer.parseInt("123"); 
		for(int i=0; i<ss.length; i++){
			System.out.println( ss[i] + ":" + atoi(ss[i]));
		}
	}