阅读java中的下一个单词

阅读java中的下一个单词,java,java.util.scanner,Java,Java.util.scanner,我有一个包含以下内容的文本文件: ac und accipio annehmen ad zu adeo hinzugehen ... 我阅读文本文件,并反复阅读以下行: Scanner sc = new Scanner(new File("translate.txt")); while(sc.hasNext()){ String line = sc.nextLine(); } 每行有两个单词。java中是否有任何方法可以获取下一个单词,或者我必须拆分行字符串才能获取单词?您已

我有一个包含以下内容的文本文件:

ac und
accipio annehmen
ad zu
adeo hinzugehen
...
我阅读文本文件,并反复阅读以下行:

Scanner sc = new Scanner(new File("translate.txt"));
while(sc.hasNext()){
 String line = sc.nextLine();       
}

每行有两个单词。java中是否有任何方法可以获取下一个单词,或者我必须拆分行字符串才能获取单词?

您已经在这一行代码中获取了下一行:

 String line = sc.nextLine();  
要获得一行文字,我建议使用:

String[] words = line.split(" ");

您不必拆分行,因为java.util.Scanner的默认分隔符是空白

您只需在while语句中创建一个新的Scanner对象

    Scanner sc2 = null;
    try {
        sc2 = new Scanner(new File("translate.txt"));
    } catch (FileNotFoundException e) {
        e.printStackTrace();  
    }
    while (sc2.hasNextLine()) {
            Scanner s2 = new Scanner(sc2.nextLine());
        while (s2.hasNext()) {
            String s = s2.next();
            System.out.println(s);
        }
    }

使用
Scanner
s,您将为每一行生成大量对象。您将为带有大文件的GC生成相当数量的垃圾。此外,它的速度几乎是使用split()的三倍

另一方面,如果按空格(
line.split(“”
)分割,则如果尝试读取具有不同空格分隔符的文件,代码将失败。如果
split()


注:对不起,我无权对已经给出的答案发表评论。

你最好先读一行,然后再拆分

File file = new File("path/to/file");
String words[]; // I miss C
String line;
HashMap<String, String> hm = new HashMap<>();
try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8")))
{
    while((line = br.readLine() != null)){
        words = line.split("\\s");
        if (hm.containsKey(words[0])){
                System.out.println("Found duplicate ... handle logic");
        }
        hm.put(words[0],words[1]); //if index==0 is ur key
    }

} catch (FileNotFoundException e) {
        e.printStackTrace();
} catch (IOException e) {
        e.printStackTrace();
}
File File=新文件(“路径/到/文件”);
字符串[];//我想念C
弦线;
HashMap hm=新的HashMap();
try(BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(file),“UTF-8”))
{
而((line=br.readLine()!=null)){
文字=行分割(\\s);
if(hm.containsKey(单词[0])){
System.out.println(“找到重复的…句柄逻辑”);
}
hm.put(words[0],words[1]);//如果index==0是您的键
}
}catch(filenotfounde异常){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}

您可以使用Scanner逐字读取,Scanner.next()读取下一个单词

try {
  Scanner s = new Scanner(new File(filename));

  while (s.hasNext()) {
    System.out.println("word:" + s.next());
  }
} catch (IOException e) {
  System.out.println("Error accessing input file!");
}

您的while循环应该是
while(sc.hasnetline()){
这是德语/拉丁语发声培训师吗?是的,关于使用文件和hashmap的一个小练习是可以将扫描仪应用于行并使用next扫描行吗?是的,那么您应该修改while循环:while(sc.hasnetline())我想将单词存储在hashmap中,因此第二个循环的每次迭代都应该包含单词。是否可以让s1.next()两次并执行类似的操作:map.put(s1.next(),s1.next())?是的,只要文件格式正确,这应该可以工作。@Gab…很快,您将获得一个Java作业:)