2017-04-25 11 views
1

こんにちは私はユーザーが 'M'または 'l'を入力しなかった場合にメッセージを生成するIf文を生成しようとしています。 'M'または 'l'が入力されている場合は、回答(4または5)が表示されます。java IF文が動作しません。変数に問題があります。

文字を入力するたびにエラーがポップアップし、「ピザサイズはM(中)またはl(大)」でなければならないというメッセージがポップアップします。私は数字だけではなく文字を入力したい。

私はhaventが質問を正しく説明してもお詫び申し上げます。

public static void main(String args[]) { 

    char invalid; 

    double M, l;  

    Scanner pizzasize = new Scanner(System.in); 

    double fstep = 0, sstep = 0, tstep = 0, ostep = 0, lstep = 0; 
    M = 4; 
    l = 5; 
    System.out.println("Enter pizza size:"); 

    fstep = pizzasize.nextDouble(); 

    if(fstep != M|| fstep != l){ 
     System.out.println("Pizza size must be M (medium) or l (large):"); 
    }else{ 
     String input = pizzasize.next(); 
     if(fstep == M||fstep ==l){ 
      fstep = M; 
     } 
     else if(input.equals("l")){ 
      fstep = l; 
     } 

    pizzasize.close(); 

} 

} }

+4

'場合(FSTEP!= M || FSTEP!= 1){'は常にtrueになりますが行っている番号の比較よりも、if文で文字列比較を行うために、より良い文字を比較したい場合は –

+0

'(fstep!= M || fstep!= l)'は、ユーザーが入力した 'M'または 'l' "を意味するものではなく、" a "ユーザーが 'M'を入力しなかったか、** '**'を入力していません。そのうちの1つは常に真実です。 – shmosel

+0

これは私が今まで見た中で最も混乱しやすいコードの1つです。 – Mritunjay

答えて

0

前の入力は、このコード間違って使用した場合、入力MまたはLにユーザに依頼することができるように:

package com.stackoverflow.json; 

import java.util.Scanner; 

public class Main { 
    public static void main(String[] args) { 
     Scanner pizzasize = new Scanner(System.in); 

     System.out.println("Enter pizza size:"); 

     String input = pizzasize.next(); 

     while (!(input.equals("M") || input.equals("l"))) { 
      System.out.println("Pizza size must be M (medium) or l (large):"); 
      input = pizzasize.next(); 
     } 
     System.out.println(input); 
     pizzasize.close(); 

    } 

} 

プリント:

Enter pizza size: 
a 
Pizza size must be M (medium) or l (large): 
M 
M 
+0

OPは明らかに、「働く」コードを取得するだけでなく、学習することを目指しています。オリジナルに何が間違っていたのかを指定し、それを修正する方法を提案すれば、はるかに有益でしょう。元のスニペットを書き直すことは、質問と同様に不明です。 – Boaz

0

fstep = pizzasize.nextDouble();

ここで二重値を読み取るようにスキャナに要求しているため、文字入力時にエラーが発生します。

fstepの可変型をstringに変更し、pizzasize.next()を使用して文字を割り当てます。また

あなたはむしろあなたが

関連する問題