0

ユーザーがポート番号に 1024 未満の番号を入力すると、再試行するように求める条件を作成したいと考えています。if ステートメントと単純な while ループの実行方法は知っていますが、これを実行する方法がよくわかりません。

import java.net.ServerSocket;

class Server {
    public void start (int num) throws Exception {
        ServerSocket server = new ServerSocket(num);
        if(num  < 1024){
            ServerSocket server = new ServerSocket(num);
        }
    }
}

しかし、これは間違っています。whileループが使用される可能性があることはわかっていますが、同様のアプローチを試みましたが、それでもエラーが発生しました。ユーザーが 1024 未満の数字を入力すると、もう一度数字を入力するよう求められます。numberが>=1024になるまでそれを続けてください。

ありがとう。

4

4 に答える 4

1

IllegalArgumentExceptionのときに投げることができますnum < 1024。このメソッドの呼び出し元は、try .. catch ブロックを使用する必要があります (おそらくループ内で再試行します)。

呼び出し元は以下を使用できます。

Server s = new Server;
int maxRetries = 10;
int retry = 0;
while(retry < maxRetries){
    try {
        retry++;
        // Read value to num somehow (scanner maybe)
        s.start(num);
    catch (IllegalArgumentException e){
        // print error string
    }
}
于 2013-03-10T13:56:49.457 に答える
1
public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int port = scanner.nextInt();
    while (port < 1024) {
        System.out.println("Please enter a valid port");
        port = scanner.nextInt();
    }
    System.out.println("Port is "+port);
    //Put the logic here to start the server socket.
}

これを試して、スキャナー部分をあなたの値に置き換えてください。

于 2013-03-10T14:03:28.637 に答える
1

必要なのはスキャナークラスだけです。http://www.homeandlearn.co.uk/java/user_input.htmlを参照してください。

Scanner user_input = new Scanner( System.in );
int portEntered=user_input.nextInt();
while(user_input<1024)
{
//  message stating user has entered number less than 1024 using sysout
portEntered= user_input.nextInt();
}
于 2013-03-10T14:13:22.077 に答える
0

その場合だけテストすることはしません。ServerSocketを作成してみてください。何らかの理由でBindExceptionがスローされた場合は、ユーザーに再度プロンプトを表示して再試行してください。

于 2013-03-11T05:04:53.557 に答える