Javaプログラミング学習サイト ゆるゆるプログラミング

・Javaソースダウンロード(StringtoValue10.java)

文字列(String型)で格納された整数値を整数(int型)に変換するJavaソースコードです。ここでは、Stringをbyte配列に変換し、その配列を元にint型の値を計算します。

このソースについての記事はこちら「文字数字を数値に変換」です。

StringtoValue10.javaをダウンロード

ダウンロードしたファイルはzip形式です。解凍して使ってください。Windowsの場合、ダウンロードしたzipファイルをマウスの右ボタンでクリックして表示されるポップアップメニューから「すべて展開(T)」で解凍できます。

public class StringtoValue10 {
	// 文字列を10進数に変換
	// エラーの場合、int型の最小値"Integer.MIN_VALUE"を戻す
	static int parseInt10( String str )
	{
		// 文字数を取得
		int len = str.length();

		// 文字数が1未満の場合、intの最小値を戻す
		if ( 1 > len )
			return Integer.MIN_VALUE;

		// 文字列をbyte配列に変換
		byte[] code = str.getBytes();

		// 整数の符号の初期化(-1:'-' 1:'+')  
		int sign = 1;

		// 結果格納用の変数
		int result = 0;

		// 変換するループ
		for ( int i = 0; i < len; i++ ) {
			switch ( code[ i ] ) {
				case '-':
					// マイナス符号の処理

					// 文字列の途中に'-'が有る
					if ( 0 != i )
						return Integer.MIN_VALUE;

					// '-'だけの文字列
					if ( 2 > len )
						return Integer.MIN_VALUE;

					// 符号を'-'にする
					sign = -1;
					break;

				case '+':
					// プラス符号の処理

					// 文字列の途中に'+'が有る
					if ( 0 != i )
						return Integer.MIN_VALUE;

					// '+'だけの文字列
					if ( 2 > len )
						return Integer.MIN_VALUE;

					// 符号を'+'にする
					sign = 1;
					break;

				case '0':
				case '1':
				case '2':
				case '3':
				case '4':
				case '5':
				case '6':
				case '7':
				case '8':
				case '9':
					// 数字の処理の処理
					// 桁を1桁増やす
					result *= 10;

					// code[i]の値を整数にキャストして足す
					result += (int)( (byte)code[ i ] - '0' );

					break;

				default:
					// 数字と符号以外の文字の場合
					return Integer.MIN_VALUE;
			}
		}

		// 最後に符号を掛けて戻す
		return result * sign;
	}


	// メイン
	public static void main( String[] args ) {
		// 結果を格納する変数
		int result;

		// 変換結果出力
		result = parseInt10( "1234567" );
		System.out.println( result );

		result = parseInt10( "-99999" );
		System.out.println( result );

		result = parseInt10( "+8888" );
		System.out.println( result );

		result = parseInt10( "-" );
		System.out.println( result );

		result = parseInt10( "+" );
		System.out.println( result );

		result = parseInt10( "678+9" );
		System.out.println( result );
	}
}

このソースについての記事はこちら「文字数字を数値に変換」です。

 

■新着情報

2022.07.07 外部プログラムの実行 exeファイル実行
2022.07.06 完全数 6=1+2+3

■広告

 

 

 

 

Topへ