2
import java.util.Scanner;

public class Hello {

    public static void main(String args[]) {
        Scanner in = new Scanner(System.in);
        int a;
        String s;

        System.out.println("Enter int : ");
        a = in.nextInt();
        System.out.println("Enter String : ");

        s = in.nextLine();
        System.out.println("int : "+a+"\nString : "+s);
    }
}

我是Java的完全初学者。我上课了Hello,想输入一个数字和一个字符串,但我认为s = in.nextLine();这一行被忽略了。如何逐行输入两个值。

4

4 回答 4

4

当您使用Scanner.nextInt()时,它不会使用新行(或其他分隔符)本身,因此返回的下一个标记通常是一个空字符串。因此,您需要使用Scanner.nextLine(). 您可以丢弃结果而不是将其分配给a

int a = in.nextInt(); 
in.nextLine();

正是出于这个原因,我建议始终使用nextLine(or BufferedReader.readLine()) 并在使用Integer.parseInt().

于 2012-07-13T06:25:25.437 回答
1

代替

s = in.nextLine();

尝试

in.nextLine();
s = in.nextLine();

对 nextInt() 的调用仍然留下一个尾随换行符。

调用 in.nextLine() 实际上会转到下一行。然后 in.nextLine 会得到你的实际结果。

于 2012-07-13T06:17:31.437 回答
0

像这样尝试:D

import java.util.Scanner;

public class Hello {
    public static void main(String args[]) {
        Scanner in = new Scanner(System.in);
        int a;
        String s = null;
        System.out.print("Enter int: ");
        a = in.nextInt();

        while ((s = in.nextLine()).trim().isEmpty()) {
            System.out.print("Enter String: ");
        }

        System.out.println("int : " + a + "\nString : " + s);
    }
}
于 2012-07-13T06:30:12.987 回答
0
import java.util.Scanner;
public class Hello{
    public static void main(String args[]){
        Scanner in = new Scanner(System.in);
        int a;
        String s;
        System.out.println("Enter int : ");
        a = in.nextInt();
        System.out.println("Enter String : ");
        s = in.next();
        System.out.println("int : "+a+"\nString : "+s);
    }
}
于 2012-07-13T06:40:36.957 回答