2

コードに問題があり、誰かが不足しているものを見つけてくれることを願っています。私のコードは次のとおりです。

import java.io.IOException;

class Boat{

    String boatName = (" ");
    boolean sailUp = false;

}

public class Project2{

    public static void main(String[] args){

        System.out.println("\n");

        Boat[] boatArray;

        boatArray = new Boat[args.length];

        for(int i = 0 ; i < args.length ; ++i){

            boatArray[i] = new Boat();

        }

        for(int j = 0 ; j < args.length ; ++j){

            boatArray[j].boatName = args[j];

        }

        for(int k = 0 ; k < args.length ; ++k){

            String firstLetter = boatArray[k].boatName.substring(0, 1);

            if(firstLetter == ("B")){

                boatArray[k].sailUp = true;

            }else if(firstLetter == ("C")){

                boatArray[k].sailUp = true;

            }else if(firstLetter == ("N")){

                boatArray[k].sailUp = true;

            }else{

                boatArray[k].sailUp = false;

            }
        }

        for(int l = 0 ; l < args.length ; ++l){

            System.out.println("\nThe " + boatArray[l].boatName + " is ready to sail...");

            if(boatArray[l].sailUp == false){

                System.out.println("\n\tbut the sail is down, raise the sail!");

            }else if(boatArray[l].sailUp == true){

                System.out.println("\n\tthe sail is up, ahead full!");

            }           
        }
    }
}

次の出力が必要です。

C:\Documents and Settings>java Project2 Enterprise Challenger Discovery Nimitz

エンタープライズは出航する準備ができています...

    but the sail is down, raise the sail!

チャレンジャーは出航する準備ができています...

    the sail is up, ahead full!

ディスカバリーは出航する準備ができています...

    but the sail is down, raise the sail!

ニミッツは出航する準備ができています...

    the sail is up, ahead full!

しかし、私はこれを取得します:

C:\Documents and Settings>java Project2 Enterprise Challenger Discovery Nimitz

エンタープライズは出航する準備ができています...

    but the sail is down, raise the sail!

チャレンジャーは出航する準備ができています...

    but the sail is down, raise the sail!

ディスカバリーは出航する準備ができています...

    but the sail is down, raise the sail!

ニミッツは出航する準備ができています...

    but the sail is down, raise the sail!

3 番目のループで帆の状態がリセットされないのはなぜですか?

4

6 に答える 6

4

文字列はオブジェクトなので、equalsメソッド ("C".equals(firstLetter))を使用して比較します==

また、必要な文字が 1 つだけの場合は、( を使用してcharAt(int)) char を抽出し、'A'、'B' などと比較できます (今回は==:) を使用)。

char firstLetter = boatArray[k].boatName.charAt(1);
if(firstLetter == 'B'){
于 2012-05-08T04:46:01.317 に答える
3

変化する

firstLetter == ("B")

firstLetter.equals("B")

==.equalsasは値の等価性をチェックしますが、参照の等価性をチェックします。

于 2012-05-08T04:47:38.727 に答える
0

String型のオブジェクトを操作する場合は、'equals' または 'equalsIgnoreCase' メソッドを使用してみてください 。

このようなもの

if( "B".equalsIgnoreCase( firstletter ) ){
// do whatever
}
于 2012-05-08T04:46:28.217 に答える
0
== -> checks for equality in reference.

equals -> checks for equality in value.

そのため、代わりに equals メソッドを使用してみてください。

于 2012-05-08T04:48:07.263 に答える
0

オブジェクトを別のオブジェクトと比較するときは、「==」ではなく .equals() メソッドを使用する必要があります。「==」は 2 つの文字列のポインタを比較します。

于 2012-05-08T04:50:22.197 に答える
0

そのように string. equals() を使用します

if(firstLetter.equals("B")){

       boatArray[k].sailUp = true;

}else if(firstLetter.equals("C")){

       boatArray[k].sailUp = true;
}else if(firstLetter.equals("N")){

       boatArray[k].sailUp = true;

}else{

       boatArray[k].sailUp = false;
}
于 2012-05-08T04:53:55.537 に答える