2017-11-09 12 views
1

無効な入力フローが機能しません。負の月の値を与えるたびにこの例外が戻されます。スレッドmainの例外main.mainのjava.lang.NegativeArraySizeException

コード:

import java.util.Scanner; 
public class Main { 

    public static void main(String[] args) { 


     Scanner input= new Scanner(System.in); 
     System.out.println("Enter the number of months :"); 
     int month = input.nextInt(); 
     if(month<0) 
     { 
       System.out.println("Invalid Input"); 
     } 
     int sum = 0; 
     int a[] = new int[month]; 
     System.out.println("Enter the profit of each month in shipment"); 
     for (int i=0; i<month; i++) 
     { 
      a[i] = input.nextInt(); 
      sum = sum+a[i]; 
     } 
     System.out.println("Total profit : "+sum); 
    } 
} 
+2

コードフローを見ると、実際のメッセージは「無効な入力ですが、どうにか処理しています」ということがわかります。 –

+0

ブロックを 'if(month <0)'と考えてみましょう。これは本当にあなたがしたいことをしていますか? – Korashen

答えて

-1

それとも、if文でelseステートメントを使用することができます。

+0

ありがとうこれも働いた!!あなたの時間と入力のおかげで – aruncj

+0

downvoteの理由は何ですか? –

+0

申し訳ありませんが、今すぐあなたを助けていただきありがとうございます。 – aruncj

2

入力が示すように、あなたは負のサイズを持った配列を作成することはできません。入力したmonthを正しくチェックしていますが、負の値を取得してもフローを終了しません。その時点でreturnまたはexitを入力すると、そのトリックが行われます。例えば:

if (month < 0) { 
    System.out.println("Invalid Input"); 
    return; // Here 
} 
+0

ユーレカ!!それは問題でした、私のような初心者を助けてくれてありがとう!! – aruncj

関連する問題