在java中找不到的参数中传递的变量

时间:2015-05-30 22:09:54

标签: java parameters

首先,我要说我有一个名为 size 的变量,我在主要方法中声明我传递(或尝试无论如何)作为其他方法的参数(调用不同的类文件)。 Size是一个变量,它被输入到命令行参数中,如:C 10 l 5 s 6.我解析了每个参数并使用switch重定向它们。

长话短说我的编译器给了我这些错误,我一直在努力修复它们,但无法弄明白。

/home/miguel/School/project 3/driver.java:31: error: '.class' expected
            mySquare( int size );
                          ^
/home/miguel/School/project 3/driver.java:31: error: ';' expected
            mySquare( int size );
                              ^
/home/miguel/School/project 3/driver.java:46: error: '.class' expected
        char2D( int size, int totSize)
                    ^
/home/miguel/School/project 3/driver.java:46: error: ';' expected
        char2D( int size, int totSize)
                        ^
/home/miguel/School/project 3/driver.java:46: error: ';' expected
        char2D( int size, int totSize)

这是代码:

public class driver {
    public void main(String[] args){
        String type = args[0];
        int size;

        switch (type.toLowerCase().charAt(0)) {
            case 'l': 
                size = Integer.parseInt(args[1]);
                myLine(size);
                break;
            case 's':
                size = Integer.parseInt(args[1]);
                mySquare(size);
                break; 
            case 'c': 
                size = Integer.parseInt(args[1]);
                myCube(size);
                break;
        }
    }

    public void myLine(int size) {                     // 
        myLine(size);
    }

    // System.out.print("*");                  // don't need to print in here

    //myLine(int size); 
    public int mySquare(int size) {
        //for (i = 0; i < size ; i++)
            mySquare(int size);
    }

    public void myCube(int size) {                                     // z will be x but only have the length of it 
        //z = size + .5
        //  myCube(size)
    }

    public int char2D(int size) {
        char[][] char2D = new char[1][1];   // figure out size of array later and replace 1 with variable totSize
        int x1 = 1;
        this.size = size;

        char2D(int size, int totSize)
    }
}

myLine类中的其他代码

public class myLine extends char2D {
    public int myLine(int size) {
        for (i = 0; i < size ; i++)
            System.out.print("*");
    }
}

2 个答案:

答案 0 :(得分:3)

在此代码中:

 public int mySquare( int size ) {
    //for (i = 0; i < size ; i++)
    mySquare( int size );
 }

第三行mySquare(int size);没有意义。如果它应该是函数调用,则类型声明int不应该存在。然后该函数将递归调用自身,直到您的堆栈溢出并且程序崩溃。

您稍后会遇到类似的问题:

char2D( int size, int totSize)

如果它应该是一个函数调用,它之后需要一个分号,而不是在它的参数前面有int。但它仍然不会匹配您的类中声明的任何函数,因为您声明为函数的char2D只接受一个参数。

答案 1 :(得分:0)

让我们从第一个问题开始,你评论说你正在尝试使用继承。有几件事你必须要记住“父类”,通常是你构建一组set类型的方法,我会在继承中调用它们。

这是一个关于如何构建继承父类的小代码片段。

public abstract class Animal 
{
//data member
private String animalType;

//getter
public String getAnimalType() {
    return animalType;
}

//1-arg constructor
Animal(String animalType)
{
    this.animalType = animalType;
}

public abstract String reproduce();

}

这是一个与Animal直接相关的子类

public class Mammle extends Animal
{
    private String mammalType;

//1-arg constructor
Mammle(String mammalType)
{
    //must do an explict call to supper
    super("mammal");
    this.mammalType = mammalType;
}


public String getMammalType()
{
    return mammalType;
}

public String reproduce()
{
    return("This " + this.getMammalType() + " gives live birth.");
}
}//end of class


   //this is a subclass of mammle
   public class Platypus extends Mammle implements layeggs 
  {

//data member
public String platypusName;

//1-arg
public Platypus(String platypusName)
{
    super("platypus");
    this.platypusName = platypusName;
}


public String getPlatypusName() {
    return platypusName;
}

//implement the abstract method from interface
public String layAnEgg()
{
    return("this " + this.getMammalType() + " Lays eggs to reproduce");
}
}//end of class

这是你如何设置一个正确的继承,然后这就是我如何使驱动程序类看起来像

public class pregotesr {

public static void main(String[] args) 
{
    //create a platypus pbject
    Platypus platOne = new Platypus("Penelope");


    System.out.println("The platOne object is a " + platOne.getAnimalType());
    System.out.println("The platOne object is a " + platOne.getMammalType());
    System.out.println("Platypus reproduction method: " + platOne.reproduce()); 
}
}

我通常总是在驱动程序类中为我想要调用的特定类创建一个Object,并插入我想要使用的方法。例如,您想要设置大小 Square

 square.setSize();