You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中使用Scanner类读取控制台输入时遇到问题

处理Java Scanner读取顶点输入的问题

嘿,我瞅见你这段用Java Scanner处理顶点输入的代码啦,最后一行的keySet.keySe...明显是没写完,应该是调用keySet()方法对吧?我帮你把代码补全,顺便梳理下逻辑和容易踩的小坑:

首先,先把你未完成的代码补全并优化下:

import java.util.HashMap;
import java.util.Scanner;
import java.util.Set;

public class VertexInputExample {
    public static void main(String[] args) {
        System.out.println("Please enter the number of vertices");
        Scanner scanner = new Scanner(System.in);
        int numOfVertices = scanner.nextInt();
        
        // 处理nextInt留下的换行符(好习惯,避免后续用nextLine时出问题)
        scanner.nextLine();

        System.out.println("Please name the vertices (space-separated or each on a new line)");
        HashMap<String, Integer> nameNumMap = new HashMap<>();
        for (int i = 0; i < numOfVertices; ) {
            String vertexName = scanner.next().trim();
            // 避免重复的顶点名称覆盖原有映射
            if (nameNumMap.containsKey(vertexName)) {
                System.out.println("Oops, '" + vertexName + "' is already used! Please enter a unique name.");
            } else {
                nameNumMap.put(vertexName, i);
                i++;
            }
        }

        // 你未完成的部分:正确获取keySet的写法
        Set<String> keySet = nameNumMap.keySet();
        System.out.println("\nHere's your vertex name to index mapping:");
        for (String vertex : keySet) {
            System.out.println(vertex + " -> " + nameNumMap.get(vertex));
        }

        // 记得关闭Scanner
        scanner.close();
    }
}

几个关键注意点:

  • 换行符处理:scanner.nextInt()只会读取整数,输入完回车的换行符会留在输入缓冲区里。虽然scanner.next()会自动跳过空白(包括换行),但如果后续需要用scanner.nextLine()读取整行内容,就会直接读到空字符串,所以提前用scanner.nextLine()清掉换行符是个好习惯。
  • 重复顶点名称:HashMap的key是唯一的,如果用户输入重复的名称,后面的会直接覆盖前面的映射。我加了判断逻辑,提示用户输入唯一名称,避免数据丢失。
  • keySet调用:你之前的keySet.keySe...应该是笔误,正确的方法调用是nameNumMap.keySet(),它会返回所有顶点名称的集合,方便后续遍历或操作。

如果还有其他问题,比如输入验证(比如用户输入非整数的顶点数量),可以再唠唠~

内容的提问来源于stack exchange,提问作者Auro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:07:41