0

これは私が使用しているコードです:

System.out.println("Create a name.");
name = input.nextLine();
System.out.println("Create a password.");
password = input.nextLine();

しかし、ここまで来ると、「名前を作成してください」とだけ表示されます。と「パスワードを作成します。」両方同時に、何かを入力する必要があります。したがって、基本的に、文字列を入力する必要があるスキャナー部分をスキップしています。「名前を作成」の後。と「パスワードを作成します。」が出力されて入力すると、名前とパスワードの両方が入力したものに変更されます。これを修正するにはどうすればよいですか?

これは完全なクラスです。テストしているだけなので、実際にはプログラムにはなりません。

package just.testing;

import java.util.Scanner;
public class TestingJava
{
    static int age;
    static String name;
    static String password;
    static boolean makeid = true;
    static boolean id = true;

    public static void main(String[] args){
        makeid(null);
        if(makeid == true){
            System.out.println("Yay.");
        }else{

        }
    }
    public static void makeid(String[] args){
        System.out.println("Create your account.");
        Scanner input = new Scanner(System.in);
        System.out.println("What is your age?");
        int age = input.nextInt();
        if(age<12){
            System.out.println("You are too young to make an account.");
            makeid = false;
            return;
        }
        System.out.println("Create a name.");
        name = input.nextLine();
        System.out.println("Create a password.");
        password = input.nextLine();
        return;
    }
}

そして私の悪い文法で申し訳ありません。私は英語が苦手なので、これを説明するのはちょっと難しいです。

4

4 に答える 4

10

nextInt()は入力番号を使用しましたが、EOLNは使用しませんでした。

Create your account.
What is your age?
123 <- Here's actually another '\n'

したがって、create nameの後のnextLine()の最初の呼び出しは、それを入力として受け入れます。

System.out.println("Create a name.");
name = input.nextLine(); <- This just gives you "\n"

ユーザーInteger.parseInt(input.nextLine())または番号を読み取った後に別のinput.nextLine()を追加すると、これが解決されます。

int age = Integer.parseInt(input.nextLine());

また

int age = input.nextInt();
input.nextLine()

重複する質問については、こちらもご覧ください。

于 2013-02-15T16:16:38.043 に答える
1

これは実際には行がスキップされている理由を示していませんが、名前とパスワードをキャプチャしているときにコンソールを使用できます。

Console console = System.console();
String name = console.readLine("Create a name.");
char[] password = console.readPassword("Create a password.");
System.out.println(name + ":" + new String(password));
于 2013-02-15T16:17:22.787 に答える
0

next()動作しますが、スペースの後の文字列は読み取れません。

于 2015-08-19T09:48:40.837 に答える
0

nextLine() の代わりに next() を使用することもできます。私は日食でそれをテストしました。その正常に動作します。

于 2013-02-15T16:20:31.097 に答える