2016-09-16 20 views
1

初心者のコーダーです。私はユーザーが値を入力し、値を入力しないときに区別しようとしています。"ブランク入力"と実際の入力としてゼロの値を区別する

ユーザーが指定した値が入力されていない場合は、整数変数= 0になります。

しかし、ユーザーが変数として0を入力した場合、別の変数にする必要があります。

if(exam1Input == 0){ 
    exam1Per = 0;} 
if(exam2Input == 0){ 
    exam2Per = 0;} 
if(finalExamInput == 0){ 
    finalExamPer = 0;} 
if(labsInput == 0){ 
    labsPer = 0;} 
if(projectsInput == 0){ 
    projectsPer = 0;} 
if(quizzesInput == 0){ 
    quizzesPer = 0;} 
if(attendanceInput == 0){ 
    attendancePer = 0;} 

声明場合、私は、入力がゼロ(すなわち。すべての入力なし)であった場合は、ゼロにパーセンテージグレードの重みの値をひそかに、このマルチブランチをしました。

しかし、ユーザが実際の成績として「0」を入力したときの問題が出てくる。パーセンテージの重みを0にすることはできませんが、それでも特定の等級のパーセンテージにする必要があります。

テスト平均が0の場合は、グレード0に基づいてパーセンテージを計算する必要があります。

どのようにして入力の不足と実際の入力を区別することができますか?

実際の成績をゼロにしたい場合は、入力が欠落していないようにしてください。

+0

「int」を取得するためにどのようなコードを使用していますか? – 4castle

+1

デフォルトで-1を使用してみませんか? – Shadov

+0

恐ろしい!あなたが提案したコードはひどいです!そのサイクロマティックな複雑さは信じられないほど高く、理由はありません!コードのロジックを変更してください。 – acornagl

答えて

1

簡単な解決策は、ユーザーからの無効な入力となる別のデフォルト値を使用することです。例えば:ユーザーが明示的に0なされ、そして場合は-1そう今

static final int NO_INPUT = -1; 

int exam1Input = NO_INPUT; 

/**Prompt the user for input somewhere around here*/ 

if(exam1Input == 0) ... 

、exam1Inputは0になります。

1

または、intの代わりにOptionalIntを使用します。この種のシナリオは、彼らのためのものです。

OptionalInt input = OptionalInt.empty(); 
// input = Optional.of(someValue); if set 
If (input.isPresent()) { 
    int i = input.getAsInt(); 
    // use the value 
} 
関連する問題