I'm attempting to read the file开发者_运维百科.txt into java line by line and then when a line is "foo" I set the line after it to be "lineAfterFoo" then output that to the user.
My Java Code....
public void main(String[] args) throws IOException {
try {
FileReader someFile = new FileReader("file.txt");
BufferedReader input = new BufferedReader(someFile);
int i = 0;
String[] line;
line = new String[10];
line[i] = input.readLine();
while(line[i] != null) {
line[i] = input.readLine();
if (line[i] == "foo") {
i = i + 1;
line[i] = "lineAfterFoo";
}
i = i + 1;
}
for (int number = 1; number < i; number++) {
System.out.println(line[number]);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
File.txt
1
2
3
foo
HopeFullyThisWillChange
5
6
7
8
9
10
The Error...
java.lang.NoSuchMethodError: main
Exception in thread "main"
Thanks for any help!
The main
method must be static
:
public static void main(String[] args) throws IOException {
// snip...
}
Edit - onto solving the real problem
The loop only runs once because, after the first pass through the while
body, i
will be equal to 1
. At that point line[1]
is null, because you haven't read anything into it. Here's the typical idiom used instead (note the changes in variable names):
int i = 0;
String line = null;
String[] lines = new String[10];
// read the next line and immediately check to see if it's null
// also make sure that i doesn't go out of range
while ((line = input.readLine()) != null
&& i < lines.length) {
lines[i] = line;
// Use .equals() (not ==) when comparing strings!
if ("foo".equals(line)) {
i++; // shorter form of i=i+1
lines[i] = "lineAfterFoo";
}
i++;
}
This error is not related to your code at all, you're simply trying to execute the wrong class. Check your IDE configuration, and test on the command line with java MyMainClass
.
Doesn't main
need to be static
?
精彩评论