2

誰でもtxtファイルから電話番号を抽出するのを手伝ってくれます。ID という名前のフォルダーにたくさんの txt ファイルを取得しました。ユーザーが特定の ID を入力すると、midlet はファイルのタイトルを id.txt として読み取り、文字列をファイル内の電話番号として読み取り、その文字列にメッセージを送信します (たとえば、入力が 1 の場合、1 を読み取ります。 txt は文字列 123467890 を返し、メッセージを 1234567890 に送信します)。

しかし、今私の問題は、コードでtxtファイルを読み取ることができるということです:

**public String Loadnumber(String fileName){
        String str="";
        try{
              FileConnection fc =(FileConnection)Connector.open("file://localhost/root1/res/number/"+fileName);
        if(!fc.exists()){
                   hrow new IOException("File does not exist");
            }
         InputStream is=fc.openInputStream();
         byte b[]=new byte[1024];
         int length = is.read(b,0,1024);
         str = new String (b,0,length);

       }catch(Exception e ){

       }
       return str;  
    }****

次に、Loadnumber 関数の戻り文字列を電話番号アドレス ボックスに挿入しました。

        **String number= new String(Loadnumber(id+".txt"));
        destinationAddressBox.insert(number,0);**

destinationAddressBox は電話番号ボックスです。ID を入力してボタンを押すと、このボックスが表示されます。次のように宣言しました。

        **destinationAddressBox = new TextBox("phone number", number,1024,TextField.PHONENUMBER);
        destinationAddressBox.addCommand(okCommand);
        destinationAddressBox.setCommandListener(this);**

しかし、それを実行して、ID を入力するボックスで [OK] ボタンを押した後、アドレス ボックスが表示されず、次のようなエラー メッセージが表示されます。

      **java.lang.IllegalArgumentException
    at javax.microedition.lcdui.TextField.insert(+55)
    at javax.microedition.lcdui.TextField.insert(+14)
    at javax.microedition.lcdui.TextBox.insert(+9)
    at example.sms.SMSSend.commandAction(+72)
    at javax.microedition.lcdui.Display$DisplayAccessor.commandAction(+282)
    at javax.microedition.lcdui.Display$DisplayManagerImpl.commandAction(+10)
    at com.sun.midp.lcdui.DefaultEventHandler.commandEvent(+68)
    at com.sun.midp.lcdui.AutomatedEventHandler.commandEvent(+47)
    at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.handleVmEvent(+186)
    at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.run(+57)**

しかし、テキスト フィールドを TextField.PHONENUMBER ではなく TextField.ANY に変更すると、アドレス ボックスが表示され、txt ファイルに電話番号が表示されますが、メッセージは送信されず、エラー メッセージが表示されます。

           **java.lang.IllegalArgumentException: Host format
    at com.sun.midp.io.j2me.sms.Protocol.openPrimInternal(+198)
    at com.sun.midp.io.j2me.sms.Protocol.openPrim(+8)
    at javax.microedition.io.Connector.openPrim(+299)
    at javax.microedition.io.Connector.open(+15)
    at javax.microedition.io.Connector.open(+6)
    at javax.microedition.io.Connector.open(+5)
    at example.sms.SMSSend.run(+100)**

テキストフィールドは非常に重要だと思います。どうすればそれをバランスさせることができますか?よろしくお願いします!

4

1 に答える 1

1

(少なくとも) 2 つの問題があるため、1 つずつ対処する必要があります。考えられる問題は次のとおりです。

1) SMS を送信すると、IllegalArgumentException が発生します。番号をハードコーディングして、問題がまだ存在するかどうかを確認してください。プロトコルの先頭に「sms://」+数字を付け忘れたのかもしれません。

2) TextField.PHONENUMBER が機能しないのはなぜですか? ハードコードされたテキストフィールドの数を設定してみてください次に、ファイルまたはファイルの読み取りが問題であるかどうかがわかります。ファイルの末尾にある改行が問題なのかもしれません。

于 2012-11-02T00:17:20.033 に答える