阅读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作业:)