very new to java string array question

J

jason

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;


while (line != null) {
System.out.println(line);
System.out.println(String.valueOf(line));
line = reader.readLine();
MyStrArray[Counter]= line;

Counter=Counter+1;
}
System.out.println(Counter);
}
}
 
E

Eric Sosman

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.
 
L

Lew

J

jason

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.

i fixed it. thank you for taking the time to praise your own knowledge
of java.
 
N

neuneudr

If you plan to crawl the Web from
Java you'd better fake your user agent, otherwise
you're in for quite some surprises :)

URL url = new URL("http://www.google.com");
URLConnection connection = url.openConnection();
connection.setRequestProperty("User-Agent", "Mozilla/4.1... bla bla
bla"

Just search for a very common user agent and use that
one. Been there, done that: it shall works much better
faking the user agent.

Oh, don't pay too much attention to the snobbish
attitude of people in this group, c.l.j.p. is
full of people full of themselves ;)

They have in common that they're both JLS *and* grammar
nazis.

It's crazy but you can find forums where you have discussion
where several Extactiq people do participate and where people
will gently take the time to answer your questions without
feeling like they're there to show off their knowledge.

The second most important thing you'll find in here is that
people consider every Gosling brain fart to be the holy gospel.

I've had both IBM JVM engineers and Apple JVM engineers answer
me and participate in discussions with me in a much more friendly
and instructive manner than what you'll get here.

Here you'll get "RTFM / RTFJLS" type answers accompanied with
grammar-naziness (as exemplified by Lew's very constructive
participation in this thread where he quotes your lowercase 'i'
to follow it by a [sic]).

Rant off, fake your user agent :)
 
L

Lew

Oh, don't pay too much attention to the snobbish
attitude of people in this group, c.l.j.p. is
full of people full of themselves ;)

That's the pot calling the kettle black. Vas-t'en, cochon.
They have in common that they're both JLS *and* grammar
nazis.

Godwin's Law.
It's crazy but you can find forums where you have discussion
where several Extactiq people do participate and where people
will gently take the time to answer your questions without
feeling like they're there to show off their knowledge.

It's even crazier when someone like Eric Sosman provides a correct,
helpful answer to what looks like a sincere question, then someone
like you comes along and starts spouting off unfounded hostile
nonsense as if he'd done something wrong.
The second most important thing you'll find in here is that
people consider every Gosling brain fart to be the holy gospel.

What the ...? What are you on about? There's been no mention of
Gosling other than your comment here, and certainly no dogma in this
thread other than your trollish crud.
I've had both IBM JVM engineers and Apple JVM engineers answer
me and participate in discussions with me in a much more friendly
and instructive manner than what you'll get here.

You aren't setting any kind of friendly or instructive example, unlike
Eric Sosman, who gave a very friendly and instructive answer to the
OP's question.
Here you'll get "RTFM / RTFJLS" type answers accompanied with
grammar-naziness (as exemplified by Lew's very constructive
participation in this thread where he quotes your lowercase 'i'
to follow it by a [sic]).

Hush, child, the grownups are talking. Fermes ta bec.
 
A

Arved Sandstrom

jason said:
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.

i fixed it. thank you for taking the time to praise your own knowledge
of java.

No reason to get so snippy. For starters, it's mostly *not* your code -
the part that works is taken from a DZone snippet
(http://snippets.dzone.com/posts/show/3553), which you might have had
the grace to acknowledge. The part that you are having problems with -
pretty basic Java, BTW, which is why Eric said what he said, and not
incorrectly - is the minimal stuff you added.

AHS
 
Joined
Dec 24, 2010
Messages
19
Reaction score
0
jason said:
hello, below is my code. the error message is:
Exception in thread "main" java.lang.NullPointerException
at WebsiteReader.main(WebsiteReader.java:23)

String MyStrArray[]= null;


while (line != null) {
System.out.println(line);
System.out.println(String.valueOf(line));
line = reader.readLine();
MyStrArray[Counter]= line;

Counter=Counter+1;
}
}

MyStrArray[Counter]= line;
the above line throws NullPointerException
because of
String MyStrArray[]= null;
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,055
Latest member
SlimSparkKetoACVReview

Latest Threads

Top