1
    Scanner input = new Scanner(System.in);
    System.out.print("\tEnter student no.: \t");
    long studNo = input.nextLong();
    System.out.println(studNo);

入力する0914325と、印刷するだけ914325です。データ型が。なのでわかりlongます。データ型を使用できますStringが、ユーザーが誤って文字を入力した場合はどうなりますか?0から始まる数字を印刷する方法はありますか?

4

3 に答える 3

3

で始まる数字などはありません0

数値は、テキストではなく数値として保存されます。とは同じ番号な
ので、同じように格納されます。0044

先行ゼロを気にする場合は、明らかに数値として使用していないため、Stringではなく、を使用する必要があります。 郵便番号や電話番号についても同じことが言えます。Long

于 2013-01-21T14:30:22.407 に答える
0

使用する

scanner.next("[0-9]+");

これにより、必要なすべての検証がNoSuchElementException行われ、不一致がスローされます。

于 2013-01-21T15:07:32.670 に答える
0

SLaks が言ったように、常に先頭のゼロを切り捨てます。したがってString、ユーザー入力の元の書式を保持したい場合は、必ず として保存する必要があります。有効な数値かどうかを確認する最善の方法は、正規表現を使用することです。

String s = input.getLine();
if(!s.matches("[0-9]+")){
    //prompt for input again
}

基本的にこれがどのように機能するかは、入力された文字列を提供されたパターンと照合することです。

したがって、照合する文字列として [0-9]+ を配置します。括弧は、セット 0-9 内の任意の数字を意味します。プラス記号は、前のパターンが 1 回以上繰り返されることを意味します。したがって、これは文字列内のすべての文字をチェックして、それらがセット 0-9 内にあることを確認します。これを再度数値型に変換すると、先頭のゼロが失われることに注意してください。

于 2013-01-21T14:36:49.607 に答える