• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 210
  • Last Modified:

Java program

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.java
 * 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 HTMLformquery.java

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 htmlformquerypairs.java

 * @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
1 Solution
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

Never miss a deadline with monday.com

The revolutionary project management tool is here!   Plan visually with a single glance and make sure your projects get done.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now