2017-04-23 5 views
-1

私の問題は、ElementクラスからgetSymbolを取得する必要があることです。 私は通常以下のようにPeriodicTableにオブジェクトを設定します: 要素e =新しい要素(); 次に、比較のためにメソッド内でe.getSymbolを使用します。あるクラスを別のクラスに渡す方法

最初のタスクを完了し、要素のリスト全体を出力するために、PeriodicTable内の配列を次のように宣言しました。 Element [] objects = new要素[ARRAY_SIZE]; 要素のリスト全体を実行するので、正しく宣言していると思います。

また、PeriodicTableのメソッドにgetSymbolを取得する際に問題が発生しています。 ご意見をお聞かせください。

この方法では、要素のシンボルを入力します。このメソッドは要素を検索し、配列内のそのインデックスを返します。次に、インデックスを使用して、ElementクラスのtoStringメソッドを使用して、その単一の要素およびその他すべての情報を表示します。

public int searchBySymbol(String sym) 
    {  
     int index = 0; 
     boolean found = false; 

     for (int i = 0; i < objects.length; i++) 
     { 
      objects[i] = objects.getSymbol; 
     } 
     while (index < objects.length && !found) 
     { 
      if (objects[index].equals(sym)) 
      { 
       found = true; 
      } 
      else 
      { 
       index++; 
      } 
     }  
     if(found) 
     { 
      System.out.println("Found at position: " + index); 
      System.out.println(objects[index].toString()); 
     } 
     else 
     { 
      System.out.println("Not found"); 
     }  
    } 
+0

説明する代わりにコードを表示してください。それはあなたを助けることがはるかに簡単になります! –

+0

私はしようとしましたが、私はVPN上にあり、コピーしません。多分私はここにVPNにログインしていれば....試してみるだろう。 – KitKat2

+0

このメソッドの場合、ユーザーは要素のシンボルを入力します。このメソッドは要素を検索し、配列内のそのインデックスを返します。次に、インデックスを使用して、ElementクラスのtoStringメソッドを使用して、その単一の要素およびその他すべての情報を表示します。 – KitKat2

答えて

-1

あなたは間違いなくすべてのが最初の2つのループを必要としない、これには2つのソリューションがあります

  1. (推奨)記号で要素を検索すると、あなたの主な方法になる場合要素を検索する場合は、keyなどのオブジェクトの参照を許可するHashMapsのように、要素配列ではなくデータを格納するためにHashMapを使用することを検討してください。 HashMap<String, Element>HashMap APIをルックアップや、この例を確認してください。http://beginnersbook.com/2013/12/hashmap-in-java-with-example/

  2. (クイックフィックス)というよりも、フィールドを取得し、比較するための2つのループを使用して、JavaでそのようなgetSymbol(などアクセサメソッドを定義することをお勧めします)とフィールドを返しますそれに直接アクセスするのではなく、インデックス・アクセスのためのループ構造のため通常:編集

    for (Element e : objects) { 
        if (e.getSymbol().equals(sym) { 
        return true; 
        } 
    } 
    //return false after the loop omits the need for an explicit boolean variable` 
    
...このメソッドを使用してあなたにあなたのコードを簡素化することができます。インデックス番号は本質的にイテレータ変数 int iによって追跡されるので、それを追跡するために別の変数は必要ありません。

for (int i = 0; i < objects.length; i++) { 
    if (objects[i].getSymbol().equals(sym)) { 
     //print i to show index number 
     //print objects[i].toString(); 
     return true; 
    } 
} 
//print not found... 
return false; 
+0

それでは、シンボルのインデックスを返すためにこのメソッドをさらにコーディングする必要があります。また、残りの情報を返すためのコードにindexを使用するだけです。要素について? – KitKat2

+0

はい - 索引が必要な場合は、通常のforループを使用して読みやすくします。自分の投稿を編集し、別の例を追加しました。 – PandaK

関連する問題