2017-03-21 14 views
2

私は、ユーザにint(スキャナを使用して)入力を求めるプログラムがあります。 私はプログラムを7桁で受け取りたいだけです。 入力が7桁でない場合は、7桁に切り捨てます。私が問題に遭遇したときにそのためだJAVA切り捨てスキャナ入力

for(int i = 0; i > 7; i++) 
    { 
    numbers[i] = input1 % 10; 
    input1 /= 10; 
    System.out.print(numbers[i]); 
    //stores the numbers backwards so if input was 123, first element would be 3, 2, 1 
    } 

:番号が12345678であれば

だから私はそれが

1234567は、現在、私は以下のような配列で入力を格納していますになりたいです12345678と入力すると、8765432として保存されます。代わりに7654321として保存します。

誰もが1234567または7654321など数店を作る私のループ上の任意の提案を持っている場合、それは非常に参考になる:)

答えて

2

length>7場合は、no、何もしない場合は、はい、7最初の文字を続けるかどうかを確認、文字列 に入力を保存することができ、より簡単な方法;)

String input1 = sc.nextLine(); 
if(input1.length>7){ 
    input1 = input1.substring(0,7); 
} 
int input = Integer.valueOf(input1); 

これは明らかに、それぞれを保存するよりも簡単です)個別に数字を入力するか、入力を繰り返す;

を「? ('?' definition and explication

String input1 = sc.nextLine(); 
int input = Integer.valueOf(((input1.length>7) ? input1.substring(0,7) : input1); 

これは、元の入力を

+0

感謝します! – megabowser56

+0

@ megabowser56 probs;)別の方法を追加します。最初の方法よりも簡単です – azro

1

まあ、いくつかのものがあります。

まず、ArrayListを使用し、intなどのプリミティブ型ではなくIntegersを使用する方がよいと思います。もしあなたがArrayListを使っているなら、.add(Integer e)を次のように入れてIntegerをあなたのリストに入れることができます。

次のものは、for(int i = 0; i > 7; i++)の代わりに for(int i = 0; i < 7; i++)とする必要があります。違いを見ます? i++を使用している場合、ループは<ではなく>で制限されます。

入力を元に戻すのはかなり簡単ですが、代わりにi--を使用してください。私はあなた自身でこれを理解することができると思います。

+0

おかげ私のエラーをキャッチするために! – megabowser56

-1

パブリック静的ボイドtrauncateNumberをとどまるinput1この値を変更しないことを可能にする(INT INPUT1){

String Str=Integer.toString(input1); 
//int changeValue=0; 
if(Str.length()>7){ 
    //Str=Integer.toString(input1); 
    Str=Str.substring(0, 7); 
    input1=Integer.parseInt(Str); 
} 
//int changeValue= 
System.out.println(input1);  

}

関連する問題