我正在编写一个读取文件并排序“单词”的项目。这段代码可以正确编译,但是却给了我一个空指针异常。有任何想法吗?
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.util.Hashtable;
public class Lab {
Hashtable<String, Word> words = new Hashtable<String, Word>();
public void addWord(String s, int i) {
if (words.containsKey(s)) {
words.get(s).addOne();
words.get(s).addLine(i);
} else {
words.put(s, new Word(s));
words.get(s).addLine(i);
}
}
public void main(String[] args) {
System.out.println("HI");
File file = new File("s.txt");
int linecount = 1;
try {
Scanner scanner = new Scanner(file);
System.out.println("HUH");
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
while (line != null) {
String word = scanner.next();
addWord(word, linecount);
}
linecount++;
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
异常的堆栈跟踪为:
java.lang.NullPointerException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:271)
这个while
循环很奇怪:
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
while (line != null) {
String word = scanner.next();
addWord(word, linecount);
}
linecount++;
}
如果您的输入文件是:
a
b
然后scanner.nextLine()
将是return a
,然后scanner.next()
将是return
b
,因为nextLine
将返回下一个以行尾分隔的String,并next
返回输入文件中的下一个标记。这真的是您想要的吗?我建议尝试一下:
while (scanner.hasNextLine()) {{
String word = scanner.nextLine();
addWord(word, linecount);
linecount++;
}
请记住,这仅在每行只有一个单词的情况下有效。如果您想每行处理多个单词,则需要更长的时间:
while (scanner.hasNextLine()) {{
String line = scanner.nextLine();
Scanner lineScanner = new Scanner(line);
while(lineScanner.hasNext()) {
addWord(lineScanner.next(), linecount);
}
linecount++;
}
在@inheritage类型Joined中 我有班级成员、员工和学生 因此,当我保存Employee或Student记录,然后检索Person记录时,它给我的鉴别器列值为NULL,但在重新启动服务器后,它给我相应的值 如果我手动设置鉴别器列值的值,然后保存和检索,那么它会给我这个值(我需要手动设置鉴别器列值吗?)那么使用鉴别器列有什么好处呢 为什么我不应该使用一个具有列类型的employee和st
以下是启动本地计算机kubernetes集群的指南:http://kubernetes.io/v1.0/docs/gett-started-guides/docker.html 我用。yaml文件创建了各种POD,一切正常,我可以使用容器IPs访问nginx和mysql(172.17.x.x范围内,使用docker0),但是当我创建服务时,服务IPs在10.0.0.x范围内,其他容器无法访问。 k
问题内容: 因此,我对“ setter”和“ getter”方法以及它们的有用与否有疑问。 假设我只是写了一个非常基本的程序,如下所示: 然后,假设我编写了另一个使用此“ Account”类的类,如下所示: 等等等 在编写时,我正在“ Account”类中更改变量“ name”的值。我可以按照自己喜欢的方式随意编写多次代码。但是,引起我注意的是,更好的做法是将“ Account”类中的变量设为私有
我有一个问题,我希望你能帮忙,因为我是哈希和哈希引用的东西的新手? 我有以下数据结构: 如果我想访问关键中的所有URL,以便我可以对URL执行一些其他操作,那么访问这些元素的正确或首选方法是什么? 例如,我将以下面的URL结束,然后我可以在< code>foreach循环中对这些URL执行操作: -编辑- 用于访问上面所示数据结构中进一步向下的元素的代码: 使用上面的代码,为什么会出现以下错误?
以下图片: 当我运行这个命令时,我可以在http://localhost:4444/上看到Selenium 任何帮助让这两种方式中的任何一种有效。
我正在使用Codename One,试图在我的应用程序中提供一种方式,通过本机接口访问设备mfg名称和型号。我看了教程,它似乎很容易,但是当我右键单击界面并选择“Generate Native Access”时,我得到了一个。我尝试了clean/compile,但仍然得到了错误。有人能提供任何关于这可能是什么的信息吗?以下是完整的堆栈跟踪: IllegalName:com/tsi/gpflow/n