有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么println()方法要执行两次而不是一次?

public class HashMapTest2 {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        System.out.println("Enter total player");
        Integer p = s.nextInt();
        System.out.println("Enter total Team");
        Integer t = s.nextInt();
        List<String> listp = new ArrayList<>();
    for (int i = 1; i<p; i++){
        System.out.println("Enter Player name "+i);
        listp.add(s.nextLine());
    }

    List<String> listt = new ArrayList<>();
    for (int i = 1; i<t; i++){
        System.out.println("Enter Team name "+i);
        listt.add(s.nextLine());
    }
    }
}

我得到了一些奇怪的输出,如下所示:

Enter total player
3
Enter total Team
2
Enter Player name 1
Enter Player name 2
pari
Enter Team name 1

为什么程序要求我输入两次玩家的名字 这是它第一次两次询问球员的名字,我不知道为什么。有办法解决这个问题吗


共 (1) 个答案

  1. # 1 楼答案

    当您使用nextInt()时,会读取整数值,但不会读取行尾字符(Return/Enter),请将代码更改为使用nextLine()进行正确处理,如下所示

    public static void main(String... obj) {
        Scanner s = new Scanner(System.in);
        System.out.println("Enter number of Players");
        Integer p = Integer.valueOf(s.nextLine());
        System.out.println("Enter number of Teams");
        Integer t = Integer.valueOf(s.nextLine());
    
        List<String> listp = new ArrayList<>();
        for (int i = 0; i < p; i++){
            System.out.println("Enter Player name " + i);
            listp.add(s.nextLine());
        }
        List<String> listt = new ArrayList<>();
        for (int i = 1; i < t; i++){
            System.out.println("Enter Team name " + i);
            listt.add(s.nextLine());
        }
    }