0

このクラスは楽しみのために作成したもので、いくつかの制約と if ステートメントを追加したいと考えています。しかし、方法がわからない。

問題 1) System.out.print の出力に対して if ステートメントを実行する方法がわかりません。たとえば、ユーザーが 50 文字を超えると入力が停止されます。

私は MySQL でこれを行う方法を知っていますが、ATM の経験が非常に浅いため、Java ではわかりません。:|

問題 2) nextLine の場合は数字、nextInt の場合はテキストの入力を制限したい。

これら2つの問題について誰かが私を助けることができますか?

import java.util.Scanner;

class AppForm {
   public static void main(String args[]){

      Scanner sc = new Scanner(System.in);

      System.out.print("Enter your name... ");
      System.out.println("Your name is " + sc.nextLine());

      System.out.print("Enter your age... ");
      System.out.println("Your age is " + sc.nextInt());

   }
}

ありがとう。

4

2 に答える 2

2

You should start by breaking apart the input and output code by storing the result of nextLine() in a variable:

System.out.print("Enter your name... ");
String line = sc.nextLine();
System.out.println("Your name is " + line);

You can then perform any check you need on the line string variable. The typical paradigm in the case of an interactive program is to print out an error message and ask the user to repeat the entry in case of invalid input:

System.out.print("Enter your name... ");

String line = sc.nextLine();

while (line.length() > 50) {
    System.out.println("Error: you entered more than 50 characters");

    // Ask the user for their name again...
    System.out.print("Enter your name... ");
    line = sc.nextLine();
}

System.out.println("Your name is " + line);

Unfortunately there is no way to prevent the user from typing invalid characters - you can only check the content of the line after the user has finished typing and your program receives the typed line.

于 2013-02-10T22:14:15.943 に答える
0

while ループを見ることをお勧めします。いくつかの可能性:

String name;
do {
    System.out.print("Enter your name... ");
    String line = sc.nextLine();
while (StringUtils.isEmpty(name) || name.length() > 50)

または: 文字列名;

while (StringUtils.isEmpty(name)) {
    System.out.print("Enter your name... ");
    name = sc.nextLine();
    if (name.length >= 50) {
        System.out.println("Max name length is 50");
    }
}

しかし、フロー制御オプションはたくさんあります。

于 2013-02-10T22:19:58.157 に答える