Reeses
Reeses

Reputation: 13

Java compiler error. For loop not a statement

So I'm working on an assignment where we have to use nested for loops and pass parameters to create this ASCII picture of a tree. I can't for the life of me figure out what is wrong with it that it's not compiling.

Here's the source:

public class Tree{

  public static void main(String [] args){

    drawTree(3,4);     
  }

  public static String drawTree(int n, int h){ //n is number of bodies, h is their height.

    for(int i; i = 1; i <= h; i++){ //Number of tree bodies to create
      drawSegment(n);
      }

//Trunk
    for(int i; i = 1; i <= h - 1; i++){ //Trunk spaces
      System.out.print (" ");    
    }

    System.out.print ("*"); //Trunk Body

    for (int i; i = 1; i <= h - 1; i++){ //Trunk end spaces
      System.out.print (" ");
    }
  }

//Leaves  
  public static String drawSegment(int k){ //Creates the tree's bodies 

    for(int i; i = 1; i <= k; i++){ //Number of lines  

      for(int s; s = 1; s <= k - 1; s++){ //Number of Spaces
    System.out.print (" ");      
      }

      for(int s; s <= (2 * i) - 1; s++){ //Number of Stars
    System.out.print ("*");
      }

      for(int s; s = 1; s <= k - 1; s++){ //Number of End Spaces
    System.out.println (" ");      
      }

     }
   }
}

These are the error's:

Tree.java:10: error: not a statement
    for(int i; i = 1; i <= h; i++){ //Number of tree bodies to create
                    ^
Tree.java:10: error: ')' expected
    for(int i; i = 1; i <= h; i++){ //Number of tree bodies to create
                        ^
Tree.java:10: error: ';' expected
    for(int i; i = 1; i <= h; i++){ //Number of tree bodies to create
                             ^
Tree.java:15: error: not a statement
    for(int i; i = 1; i <= h - 1; i++){ //Trunk spaces
                    ^
Tree.java:15: error: ')' expected
    for(int i; i = 1; i <= h - 1; i++){ //Trunk spaces
                            ^
Tree.java:15: error: ';' expected
    for(int i; i = 1; i <= h - 1; i++){ //Trunk spaces
                                 ^
Tree.java:21: error: not a statement
    for (int i; i = 1; i <= h - 1; i++){ //Trunk end spaces
                     ^
Tree.java:21: error: ')' expected
    for (int i; i = 1; i <= h - 1; i++){ //Trunk end spaces
                             ^
Tree.java:21: error: ';' expected
    for (int i; i = 1; i <= h - 1; i++){ //Trunk end spaces
                                  ^
Tree.java:28: error: not a statement
    for(int i; i = 1; i <= k; i++){ //Number of lines  
                    ^
Tree.java:28: error: ')' expected
    for(int i; i = 1; i <= k; i++){ //Number of lines  
                        ^
Tree.java:28: error: ';' expected
    for(int i; i = 1; i <= k; i++){ //Number of lines  
                             ^
Tree.java:30: error: not a statement
      for(int s; s = 1; s <= k - 1; s++){ //Number of Spaces
                      ^
Tree.java:30: error: ')' expected
      for(int s; s = 1; s <= k - 1; s++){ //Number of Spaces
                              ^
Tree.java:30: error: ';' expected
      for(int s; s = 1; s <= k - 1; s++){ //Number of Spaces
                                   ^
Tree.java:38: error: not a statement
      for(int s; s = 1; s <= k - 1; s++){ //Number of End Spaces
                      ^
Tree.java:38: error: ')' expected
      for(int s; s = 1; s <= k - 1; s++){ //Number of End Spaces
                              ^
Tree.java:38: error: ';' expected
      for(int s; s = 1; s <= k - 1; s++){ //Number of End Spaces
                                   ^
18 errors

I think it has something to do with the for loop in the first method drawTree not being able to find h. But I don't know how to fix it.

Upvotes: 0

Views: 18255

Answers (4)

Abhishek Kumar Amal
Abhishek Kumar Amal

Reputation: 11

use

for(int i = 1; i <= h; i++)
{
    Your Code.
} 

Note: This is the rule for FOR LOOP for(initiation; condition; statement)

Upvotes: 0

Henrik
Henrik

Reputation: 1807

In each for loop you do this:

for(int i; i = 1; i <= h; i++){ 

but it should be:

for(int i = 1; i <= h; i++){ 

With only two ; ;

for(init;condition;statement)

Upvotes: 1

Stephen Corcoran
Stephen Corcoran

Reputation: 346

Needs to be

for(int i = 1; i <= h - 1; i++) {}

and so forth for the rest of the for loops

Upvotes: 2

Arnaud Denoyelle
Arnaud Denoyelle

Reputation: 31245

Replace

for(int i; i = 1; i <= h; i++)

With :

for(int i = 1; i <= h; i++)

Upvotes: 4

Related Questions