0

私は初心者です。私のコードが乱雑であることはわかっています。コメントの追加などに取り組んでいきます。

    try // get customer's address
    {
    System.out.println("\nPlease type in your shipping address.");
    System.out.println ("This way you can receive what you have ordered.");
    System.out.println ("In this format: Street, City, State, Zipcode\n");
    customerAddress = input.nextLine();
    }
    catch (Exception e)
            {
                System.out.println("You need to enter in an address.");
            }

    try // get customer's telephone number
    {
        System.out.println("Please enter in your telephone number:\n");
        phoneNumber = input.nextLine();
    }
    catch (Exception e)
    {
        System.out.println("You need to enter in a phone number.");
    }

phoneNumber から入力を取得できますが、プログラムは customerAddress 入力をスキップしているようです。

以下は、コマンドプロンプトで取得したものです。電話番号の下にデータを入力することはできましたが、住所セクションに入力する機会がなかったことに注意してください。

配送先住所を入力してください。
このようにして、注文したものを受け取ることができます。
この形式: 番地、市区町村、州、郵便番号

電話番号を入力してください:

123457890

スキップする原因となる論理エラーはありますか?

4

2 に答える 2

0

より多くのデータを読み取る場合、Scaner のようinput.nextInt();に、1 つの int のみを読み取ります。1つの解決策は追加するinput.nextLine();ことであり、おそらく機能するはずです。

解決策 2:

使用するBufferedReader;

        BufferedReader bufferRead = new BufferedReader(new InputStreamReader(System.in));

        try{
            System.out.println("\nPlease type in your shipping address.");
            System.out.println ("This way you can receive what you have ordered.");
            System.out.println ("In this format: Street, City, State, Zipcode\n");

            customerAddress = bufferRead.readLine();
        }catch (Exception e){
            System.out.println("You need to enter in an address.");
        }

        try {
             System.out.println("Please enter in your telephone number:\n");
             phoneNumber =  bufferRead.readLine();
        }catch (Exception e){
             System.out.println("You need to enter in a phone number.");
        }  


        System.out.println(customerAddress + " " + phoneNumber);

BufferedReader で出力が得られるかどうかを確認します。

お役に立てれば。

于 2013-08-08T02:33:30.103 に答える
0

投稿に表示されていない他の多くのことが原因で、バッファに迷子の改行が残っている可能性があります. より堅牢なオプションは、nextLine が空の文字列を返す間にループすることです。

于 2013-08-08T02:30:08.970 に答える