0

以下のプログラムで困っています。「値」の後に double 値が続く形式の入力を希望し、入力がこの形式でない場合は、エラー メッセージを返したいと考えています。基本的に、最初の単語が「値」であることを確認し (そうでない場合は「false」を返します)、別のトークンがあり、このトークンが double であることを確認します (そうでない場合は、返されます)。間違い)。ただし、入力として「値」を入力しただけでは、プログラムは「期待される値」を返す代わりに、別のトークンが入力されるのを待つだけなので、問題があります。したいように。コードは次のとおりです。

import java.util.Scanner;
public class scanCheck {
    public static void main(String[] args) {

Scanner kb = new Scanner(System.in);
double a;
String str;

str = kb.next();
if (!str.equals("value"))
    System.out.print("Invalid format.");
else {
    if (kb.hasNext())
        if (kb.hasNextDouble())
            a = kb.nextDouble();
        else
            System.out.println("Value expected.");
    else 
        System.out.println("Value expected.");
    }
    }
}

ありがとうございました!

4

2 に答える 2

1

ユーザーコマンドを待っているため、kb.hasNext() が実際に false と評価されることはありません。したがって、このコードは想定どおりに動作しています。ユーザーが値を入力した後に「期待値」を表示する場合は、println ステートメントを移動します。

else {
    System.out.println("Value expected.");
    if (kb.hasNextDouble()){
         a = kb.nextDouble();
    }else {
         System.out.println("Value expected.");
    }
于 2013-07-09T18:45:58.030 に答える
0

これを試して:

    str = kb.next();
    if (!str.equals("value")){
        System.out.print("Invalid format.");
        System.exit(0);
       }
于 2013-07-09T18:46:32.690 に答える