Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在哈希表中以字符串值和整数键分隔文件中的输入行?_Java_Parsing_Hashtable - Fatal编程技术网

Java 如何在哈希表中以字符串值和整数键分隔文件中的输入行?

Java 如何在哈希表中以字符串值和整数键分隔文件中的输入行?,java,parsing,hashtable,Java,Parsing,Hashtable,我想解析(如果可能的话)包含数字字符串(即“95”)的分区,但我可以接受任何策略来解析。我的代码适用于hashMaps 为了避免过长,输入文件中的行如下所示: Kostas_Antetokounmpo 37 public static void main (String[] args) throws IOException { String path = "roster.txt"; String row; Integer row1;

我想解析(如果可能的话)包含数字字符串(即“95”)的分区,但我可以接受任何策略来解析。我的代码适用于hashMaps

为了避免过长,输入文件中的行如下所示:

Kostas_Antetokounmpo 37


public static void main (String[] args) throws IOException {
        String path = "roster.txt";
        String row;
        Integer row1;
        HashTable_NBA<Integer,String> roster = new HashTable_NBA<>();
        BufferedReader read = new BufferedReader(new FileReader(path));

        while ((row = read.readLine()) != null){

            String[] partition = row.split(" ", 2);
            if(partition.length >= 2){
                Integer key = Integer.parseInt(partition[1]);
                String value = partition[0];
                roster.put(key, value);

            }
        }

            System.out.println(roster);


    }
}

//EDIT
//the errors are these

Exception in thread "main" java.lang.NumberFormatException: For input string: "37   "
    at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.base/java.lang.Integer.parseInt(Integer.java:652)
    at java.base/java.lang.Integer.parseInt(Integer.java:770)
    at HashTable_NBA.main(HashTable_NBA.java:161)

公共静态void main(字符串[]args)引发IOException{
字符串path=“花名册.txt”;
字符串行;
整数行1;
HashTable_NBA花名册=新的HashTable_NBA();
BufferedReader read=新的BufferedReader(新文件读取器(路径));
而((row=read.readLine())!=null){
String[]partition=row.split(“,2);
如果(partition.length>=2){
整数键=Integer.parseInt(分区[1]);
字符串值=分区[0];
花名册。放置(键、值);
}
}
系统输出打印LN(花名册);
}
}
//编辑
//错误在于这些
线程“main”java.lang.NumberFormatException中的异常:对于输入字符串:“37”
位于java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
位于java.base/java.lang.Integer.parseInt(Integer.java:652)
位于java.base/java.lang.Integer.parseInt(Integer.java:770)
在HashTable_NBA.main(HashTable_NBA.java:161)

这是一个猜测,但我假设两个值之间可能有多个空格。我从split命令中删除
2
。这造成了问题

        while ((row = read.readLine()) != null){

            String[] partition = row.split("\\s+");
            if(partition.length >= 2){
                Integer key = Integer.parseInt(partition[1]);
                String value = partition[0];
                roster.put(key, value);

            }
        }

这是一个猜测,但我假设值之间可能有不止一个空格。我从split命令中删除
2
。这造成了问题

        while ((row = read.readLine()) != null){

            String[] partition = row.split("\\s+");
            if(partition.length >= 2){
                Integer key = Integer.parseInt(partition[1]);
                String value = partition[0];
                roster.put(key, value);

            }
        }


我可以包含我的全部代码,但这是我处理单独链接的哈希表类。你认为包含整个代码有帮助吗?没有。您的行是什么样子的?就像我在opDuh中包含的示例一样。那么你看到了什么?您的代码看起来不错。
String[]stringParts=yourString.trim().split(“(?我可以包含我的全部代码,但这是我处理单独链接的哈希表类。你认为包含全部代码有用吗?不,你的行是什么样子的?就像我在opDuh中包含的示例。那么你看到了什么?你的代码看起来不错。
String[]stringParts=yourString.trim().split()(?对不起,我忘了包含错误,请查看编辑。感谢您的反馈。您的文件中有尾随空格。请使用row.trim().split(“\\s+”,2)`看看这是否有帮助。我将修改我的答案添加这一点。事实上,如果你在split语句中去掉了2,那么结束分隔符也将被忽略。split将只拆分存在的内容。谢谢,没有错误,但这是打印到控制台的内容:HashTable_NBA@b065c63I将尝试提供一个密钥列表或一组f键,以便您可以使用它们打印出键和值。另一个选项是,当您从文件中读入键时,将其保存在列表或数组中。当然,这取决于您的需要。另一种可能是
entrySet()
。很抱歉,我忘了包含错误,请查看编辑。感谢您的反馈。您的文件中有尾随空格。请使用row.trim().split(“\\s+”,2)`看看这是否有帮助。我将修改我的答案添加这一点。事实上,如果你在split语句中去掉了2,那么结束分隔符也将被忽略。split将只拆分存在的内容。谢谢,没有错误,但这是打印到控制台的内容:HashTable_NBA@b065c63I将尝试提供一个密钥列表或一组f键,以便您可以使用它们打印出键和值。另一个选项是,当您从文件中读入键时,将其保存在列表或数组中。当然,这取决于您的需要。另一种可能是
entrySet()