6

行を読み取ってから、if ステートメントに入ろうとしています。しかし、最初の入力を赤くした後、ただ終了します。何がいけないのかわからない、わからない

import java.util.Scanner;

public class mainen {

    public static void main(String[] args) {
        Formler form = new Formler();
        Scanner Sscan = new Scanner(System.in);
        Scanner Dscan = new Scanner(System.in);
        String input;
        System.out.println("Formler: Molmassa");
        input = Sscan.nextLine();

        if(input == "molmassa" || input == "Molmassa"){
            double m;
            double M;
            System.out.println("Massa: "); m = Dscan.nextDouble();
            System.out.println("Molmassa: "); M = Dscan.nextDouble();
            System.out.println(form.getMolmassa(m, M));
        }
    }

}
4

4 に答える 4

9

ifステートメントを次のように変更します。

if(input.equalsIgnoreCase("molmassa") ) {  }

その後、期待どおりに動作するはずです。equals()常にまたはメソッドを使用して文字列を比較することを忘れないでくださいequalsIgnoreCase()==実際の値ではなく、オブジェクト参照を比較します。

于 2013-03-05T16:59:56.747 に答える
4

equals チェックを置き換える必要があります。

 if(input == "molmassa" || input == "Molmassa"){

以下で;

 if(input.equals("molmassa") || input.equals("Molmassa")){

1 つ目はStrings が同じオブジェクトであるかどうかをチェックし、2 つ目はそれらが同じ値であることをチェックします。これがここで必要なことです。

于 2013-03-05T17:01:32.900 に答える
4

問題はあなたのif状態にある

if(input.equalsIgnoreCase("molmassa) )

そして、すべてがうまくいくはずです。

Scannerもう1つ、取得Stringと入力を別々にする必要がないことは、両方の入力に1つのオブジェクトをdouble使用できることです。Scanner

于 2013-03-05T17:01:40.337 に答える
3
if(input == "molmassa" || input == "Molmassa"){}

メソッドまたはメソッドとStringオブジェクトを等しくする必要があります。equalsequalsIgnoreCase

if(input.equalsIgnoreCase("Molmassa")){}

==プリミティブのイコール チェックに使用されます。

于 2013-03-05T16:59:46.917 に答える