アプリ版:「スタンプのみでお礼する」機能のリリースについて

ご質問させて頂きます。
以下のコードは、javaでLOOKUPのような昨日のコードを
以前こちらでサンプルとして作成して頂いたものなんですが、
エラーの方がどうしても取れなくて困っています。

String[] value = testMap.getValue(args[0]);
の行でエラーになってしまうのですが
args[0]の部分を取ると、コンパイルエラーは取れますが
今度は実行エラーになってしまいます。

args[0]が鍵だと思うのですが
どのようにすればいいか分かりません。

ご教授して頂けたら幸いです。

---------------------------------

import java.util.*;

public class TestMap {
/*HashMap生成(クラス変数)*/
private HashMap hashMap = new HashMap();

/*追加:入力キー(クラス変数)*/
private String inputKey = null;






public static void main(String args[]){
TestMap testMap = new TestMap();
testMap.setMap();
/*Keyに対応する出力の判断*/
if(testMap.checkKey(args[0])){

↓↓↓ここでエラー
String[] value = testMap.getValue(args[0]);


System.out.println("日付:" + value[0] + " 名前:" + value[1]);
}
else{
System.out.println("対応するKeyが存在しません。");
}
}
public TestMap() {
}




/*KeyからValueを返す*/
public String[] getValue(){
String[] value = (String[])hashMap.get(inputKey);
return value;
}
}

A 回答 (2件)

TestMap クラスの getValue() メソッドは引数を取らない


仕様なのに、testMap.getValue(args[0]) と引数を渡して
いるのでコンパイルエラーとなります。
getValue() の処理ではコマンドライン引数は使われてない
ので、メソッド呼び出し側の記述ミスかと思われます。

>args[0]の部分を取ると、コンパイルエラーは取れますが
>今度は実行エラーになってしまいます。

との事ですが、この手の問題を聞く時は元のソースを提示
してしかるべきかと思います。
事前の事を知らない人にとっては inputKey、checkKey()
が何の事なのか知るよしもない事ですからね。

http://www.okweb.ne.jp/kotaeru.php3?q=573712

私が上記のソースの getValue() 引数を変更し、コンパイル
実行をした限りでは、実行時エラーは出ませんでした。
恐らく、コマンド引数を渡していないんじゃないかと。

>java TestMap *

「*」のところに任意の1文字を入れて実行して見て下さい。

余計なお世話かもしれませんが、初心者のうちは出切るだけ
「模範的」なサンプルコードを元にして学習することが
重要だと思います(模範的とはクセのないという意味で)
手持ちの参考書のソースコード等を元に学習された方が
良いかもしれませんね。
    • good
    • 0
この回答へのお礼

ご返事有り難うございました。
お陰様で解決しました。

これからは全部載せるようにしたいと思います。
大変、お手間を取らせてしまって申し訳ありませんでした。

お礼日時:2003/06/20 15:37

こんにちは。


あまり自信はないのですが、いくつか気になったところをお答えさせてもらいます。

まずgetValueメソッドですが、宣言に引数がありませんので
testMap.getValue(args[0]);
という呼び方には問題があると思います。

あとgetValueメソッドで
String[] value = (String[])hashMap.get(inputKey);
のinputKeyはnullではないですか?

実行エラーは、いたるところにSystem.out.println()
を書いてエラーの場所を特定してみるのがいいと思います。
    • good
    • 0
この回答へのお礼

ご質問させて頂きます。

特に
>実行エラーは、いたるところにSystem.out.println()
>を書いてエラーの場所を特定してみるのがいいと思います。
は、これから使わせて頂きます。

お礼日時:2003/06/20 15:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!