繁体   English   中英

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

[英]Why is the println() method being executed twice instead of once?

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

为什么程序要求我输入播放器名称两次? 这是第一次要求玩家输入两次姓名,我不知道为什么。 有什么办法解决这个问题?

使用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());
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM