Java program

Posted on 1998-07-15
Last Modified: 2010-05-18
I have to write a program that takes a command line argument and splits it into it's component parts and prints it out like :

java Prog4 "var1=one+two&var2=this+is+another+one"

would yield


I have to do this with three class files that are mostly empty.  The problem that I am having is that when I try and run the program, I get an error that is a java.nullpointerexception.  The three classes are below.  If you have any idea why this is happening, it would be most appreciated if you told me.  Thanks!

Here is
 * Prog4 is a test harness for parsing out html form queries.
 * These queries are in the form: name=val1+val2&name2=val3+val4+val5.  
 * A query is enterered at the command line as: % java Prog4 "name=val"
 * NOTE: do not edit this file.
class Prog4 {
   * The driver for program 4.
   * @param args the command line argument containing the query to be parsed
  public static void main(String[] args) {
    if (args.length != 1)
      System.err.println("usage: java Prog4 <html form query>");
    else {
      HTMLFormQuery query = new HTMLFormQuery(args[0]);

      for (int i = 0; i < query.getPairCount(); i++) {
      HTMLFormQueryPair pair;

      pair = query.getPairAt(i);
      for (int j = 0; j < pair.getValueCount(); j++)
        System.out.print(" " + pair.getValueAt(j));
      if (pair.getValueCount() != 0)
      } // for
    } // else
  } // main
} // Prog4

Here is

class HTMLFormQuery {
  private HTMLFormQueryPair[] pairs; // the query pairs

   * Returns the number of query pairs
   * @returns the number of pairs in the query
  public int getPairCount() {
    return pairs.length;
  } // getPairCount

   * Returns a requested query pair
   * @param index the requested pair
   * @ returns the query pair specified by index
  public HTMLFormQueryPair getPairAt(int index) {
    return pairs[index];
  } // getPairAt

  // insert your code below
  public HTMLFormQuery(String pairs) {
  } // constructor


} // HTMLFormQuery

and here is

 * @author your-name-here
class HTMLFormQueryPair {
  private String name; // the name of pair
  private String[] values; // the values of the pair

   * Returns the name of the query pair
   * @return the name of the query pair
  public String getName() {
    return name;
  } // getName

   * Returns the number of values in the pair
   * @return the number of values in the pair
  public int getValueCount() {
    return values.length;
  } // getValueCount
   * Returns a specified value
   * @param index the location of the requested value
   * @return the value from a specified index
  public String getValueAt(int index) {
    return values[index];
  } // getValueAt

  // insert your code below ___________________________________________________
} // HTMLFormQueryPair
Question by:alpine
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
1 Comment

Accepted Solution

fontaine earned 50 total points
ID: 1226577
A java.lang.NullPointerException mostly happens when you try to access a method or a
class variable from a class instance that has not actually be created. This is the case here.
Indeed, the program fails on the query.getPairCount() of the

for (int i = 0; i < query.getPairCount(); i++)

line because getPairCount() returns the value of the length of "pairs", which is an HTMLFormQueryPair table that has not been initialized. I.e., pairs=null and
pairs.length=null.length, what throws a java.lang.NullPointerException. Once you will have splitted the pairs and properly initialized "pairs", the table of HTMLFormQueryPair, the problem will no more occur.

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Java contains several comparison operators (e.g., <, <=, >, >=, ==, !=) that allow you to compare primitive values. However, these operators cannot be used to compare the contents of objects. Interface Comparable is used to allow objects of a cl…
By the end of 1980s, object oriented programming using languages like C++, Simula69 and ObjectPascal gained momentum. It looked like programmers finally found the perfect language. C++ successfully combined the object oriented principles of Simula w…
Viewers will learn about basic arrays, how to declare them, and how to use them. Introduction and definition: Declare an array and cover the syntax of declaring them: Initialize every index in the created array: Example/Features of a basic arr…
Viewers will learn how to properly install Eclipse with the necessary JDK, and will take a look at an introductory Java program. Download Eclipse installation zip file: Extract files from zip file: Download and install JDK 8: Open Eclipse and …

726 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question