On 12/18/2009 10:52 AM, jason wrote:
hello, below is my code. the error message is:
Exception in thread "main" java.lang.NullPointerException
at WebsiteReader.main(WebsiteReader.java:23)
----program below--
import java.io.*;
import java.net.URL;
public class WebsiteReader
{
public static BufferedReader read(String url) throws Exception{
return new BufferedReader(
new InputStreamReader(
new URL(url).openStream()));
}
public static void main (String[] args) throws Exception{
BufferedReader reader = read("http://www.google.com");
String line = reader.readLine();
int Counter=0;
String MyStrArray[]= null;
Here you declare MyStrArray (poor choice of name, but
that's another topic) as a variable that can refer to an
array of references to String objects. You also set the
variable to null, meaning that it does not refer to anything
at all right now: There is no array of String anywhere, just
a variable that could refer to such a thing if you were to
create one.
while (line != null) {
System.out.println(line);
System.out.println(String.valueOf(line));
line = reader.readLine();
MyStrArray[Counter]= line;
And here you try to store a String reference in the array
that MyStrArray refers to. Unfortunately, MyStrArray is null
and does not refer to any array. Boom!
Counter=Counter+1;
}
System.out.println(Counter);
}
}
I'm not sure how to advise you to change your program,
because the real problem appears to be that you have not yet
grasped some rather fundamental notions about Java, including
- Arrays are objects, and like all objects must be created
before being used.
- An array, once created, has a fixed size: You cannot just
add or remove array elements. You can change the values
of those elements, but the elements themselves are always
there until the array itself is destroyed.
- The variables your program manipulates are primitives (int,
double, and so on) or are references that can point to
object instances (arrays, Strings, BufferedReaders, ...).
- A reference variable whose value is null points to nothing
at all. You cannot use that variable to refer to an object
until you first create an object and make the variable point
to it.
I have the feeling that until you've grokked these (and other)
basic bits of Java knowledge, correcting your program will just
give you a chunk of code that you won't understand and won't know
how to modify further. Back to the textbook; eventually, this
will all make more sense than it does now.
--
Eric Sosman
esos...@ieee-dot-org.invalid
i fixed it. thank you for taking the time to praise your own knowledge