Why is my Java code not compiling?

java , ADT , deque Hayward, United States
  • 7 years ago

    I am new to Java and need to know how to correct this function call parameter passing compiling error. Any ideas?

    List.java compiles and here is the code. //---------------------------------------------------------------------------- // List.java //---------------------------------------------------------------------------- class List { private class Node { int col; double val; Node next, prev;

          Node (int c, double v) { col = c; val = v; next = prev = null; } 
    
          public String toString() { 
             return String.format (" (%2d, %5.2f)", col, val); 
          } 
    
          public boolean equals(Node E) { return (this.val == E.val); } 
          } 
    
       private Node front, back, current; 
       private int row, length; 
    
       List(int r) { front = back = current = null; row = r; length = 0; } 
    
       void insertAfterLast(Node N) 
       {  Node node = new Node(N.col, N.val); 
    
          if ( this.length == 0 ) 
          { this.front = this.back = node; 
          }else { 
             node.prev = this.back; 
             this.back.next = node; 
             this.back = node; 
             this.current = node; 
          } 
          this.length++; 
       } 
    
       public String toString() 
       {  String str = ""; 
          for(Node N = front; N != null;  N = N.next) 
          {  if ( N == front ) { str = String.format ("%3d:", row); } 
             str += N.toString() + (N.next==null?"\n":""); 
          } 
          return str; 
       } 
    }
    

    ListTest.Java does not compile. Here are the error and code.

    -bash-3.00$ javac ListTest.java ListTest.java:20: non-static variable this cannot be referenced from a static context Entry Ea = new Entry(0, 0.0); ^ ListTest.java:24: insertAfterLast(List.Node) in List cannot be applied to (ListTest.Entry) A.insertAfterLast(Ea); ^ ListTest.java:26: insertAfterLast(List.Node) in List cannot be applied to (ListTest.Entry) B.insertAfterLast(Ea); ^ ListTest.java:28: insertAfterLast(List.Node) in List cannot be applied to (ListTest.Entry) B.insertAfterLast(Ea); ^ 4 errors

    //---------------------------------------------------------------------------- 
    // ListTest.java - A test client for the List ADT 
    //---------------------------------------------------------------------------- 
    class ListTest 
    { 
       private class Entry 
       {  int col; 
          double val; 
          Entry next, prev; 
    
          // Entry Constructor 
          Entry (int c, double v) { col = c; val = v; next = prev = null; } 
       } 
    
       public static void main(String[] args) 
       {  int i; 
          List A = new List(1); 
          List B = new List(2); 
    
          Entry Ea = new Entry(0, 0.0); 
          for(i=1; i<=4; i++){ 
             Ea.col = i; 
             Ea.val = Double.parseDouble(Integer.toString(i)); 
             A.insertAfterLast(Ea); 
             Ea.val = Double.parseDouble(Integer.toString(10-2*i)); 
             B.insertAfterLast(Ea); 
             Ea.val = Double.parseDouble(Integer.toString(9-2*i)); 
             B.insertAfterLast(Ea); 
          } 
    
          System.out.println(" "); 
          System.out.println("Print Lists A and B which have been initialized");       
          System.out.println("A = " + A); 
          System.out.println("B = " + B); 
    
       } 
    }
    

Post a reply

Enter your message below

Sign in or Join us (it's free).

Contribute

Why not write for us? Or you could submit an event or a user group in your area. Alternatively just tell us what you think!

Our tools

We've got automatic conversion tools to convert C# to VB.NET, VB.NET to C#. Also you can compress javascript and compress css and generate sql connection strings.

“Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” - Brian Kernighan