2016-05-18 9 views
-1

ユーザーからの入力をStringとしており、その文字列をclass型のパラメータを持つメソッドに渡したいとします。 これは可能ですか? 私はHashmapを使ってみました。それは働くだろうか?続いクラスの型パラメータを持つメソッドへの引数としての文字列ユーザー入力の受け渡し

は、関連するコードである:

Nodeは、クラスタイプとstartNodegoalNodeは、次String入力

public class search { 
    Scanner input = new Scanner(System.in);   
    filename = input.next(); 

    File file = new File(filename); 

    System.out.print("Enter the start node: "); 
    startNode = input.next(); 

    System.out.print("Enter the goal node: "); 
    goalNode = input.next(); 

    search s = new search(); 


    Map<String,Node> map = new HashMap<String,Node>(); 

    Node start = new Node(); 
    Node goal = new Node(); 

    map.put("startNode",start); 
    map.put("goalNode",goal); 
    System.out.println(map.get("startNode")); //IT IS PRINTING NULL HERE    

    s.searchmap(map.get("startNode"), map.get("goalNode")); //CALLING THE METHOD 

ユーザあるsearchmap方法例えば

public void searchmap(Node Start, Node Goal) { 
...... } 

され、ユーザーがスタートノードに 's'を入力し、ゴールノード(文字列)に 'g'を入力した場合、方法にNode型として渡されますsearchmap
私はこれを行うと、私はnullを返しています。 なぜそうですか?手がかりの任意の種類は非常にこのmapがキーのマッピングを保持していない場合valueが指定keyがマッピングされた、またはnullさにどのreturnますhashmap

+4

おそらく 'start'はnullです。スニペットではなく、[mcve]を投稿してください。問題を再現できる場合は、あなたを助けるためのより良い立場になります。 –

+0

'start'と' goal'変数に値を割り当てるコードを表示してください。 –

+0

私はそれを編集しました、確認してください – rose

答えて

0
if (map.contains("startNode") && map.contains("goalNode")){ 
s.searchmap(map.get("startNode"), map.get("goalNode")); 
} 

方法get()を高く評価しています。 nullを取得している場合は、特定のキーに値がマッピングされていません。 mapに を使用し、特定のキーの値があるかどうかを確認します。そうであればtrueを返します。

+0

もし 'condition'がそれを検証するだけですが、startNode(ユーザ入力)にマッピングしても、 – rose

関連する問題