从main方法调用void方法,不能在void方法中传递参数

时间:2017-03-09 15:49:26

标签: java arrays arguments

我的老师要求我们为我的计算机科学课创建一个加性项目。我已经创建了所有的void方法,并且相信所有的数学逻辑都已经找到了。但是,当我尝试在我的main方法中将参数传递给我的方法的实例时,它给出了一个错误说:

  

在这种情况下变量' x'

找不到变量
FINER: RMI TCP Connection(10)#####: [######: sun.tools.jstatd.RemoteVmImpl[-6dd825ef:15ab396432e:-7fe5, -3475770279103225284]: public abstract int sun.jvmstat.monitor.remote.RemoteVm.getCapacity() throws java.rmi.RemoteException]

3 个答案:

答案 0 :(得分:3)

我想你想要从userInput返回一个值:

public static void main(String[] args){ 

    AdditivePrimes additivePrime = new AdditivePrimes();
    String x = additivePrime.userInput();
    additivePrime.isPrime(x);
    additivePrime.numArray(x);

}

public String userInput(){
    Scanner sc = new Scanner(System.in);
    String x = null;
    try{
        System.out.println("Please enter a number: ");
        x = sc.nextLine();
    } catch(Exception e){// see  OH GOD SPIDERS comment
        System.out.println("Error, try again: ");
        x = sc.nextLine();//this is not a good way for a retry
    }
    return x;
}

或者,您可以将x作为字段。

答案 1 :(得分:1)

您的方法接受字符串作为参数,但您没有传递任何参数。您需要在main中初始化x

public static void main(String[] args){ 

    AdditivePrimes additivePrime = new AdditivePrimes();
    String x= "55";
    additivePrime.userInput(x);
    additivePrime.isPrime(x);
    additivePrime.numArray(x);

}

注意

虽然上面的代码修复了您当前的问题。它似乎不是使用这个类的正确方法。您可能应该调用.userInput()方法并获取userInput,然后将其传递给其他方法。

您可以将整体课程改为

public static void main(String[] args){ 

    AdditivePrimes additivePrime = new AdditivePrimes();
    String x = additivePrime.userInput();
    additivePrime.isPrime(x);
    additivePrime.numArray(x);

}

public String userInput(){
    Scanner sc = new Scanner(System.in);
    String x = null;
    try{
        System.out.println("Please enter a number: ");
        x = sc.nextLine();
    } catch(NumberFormatException e){
        System.out.println("Error, try again: ");
        x = sc.nextLine();
    }
    return x;
}

答案 2 :(得分:0)

在使用之前,您没有将x定义为任何内容。尝试定义x。在这种情况下,因为你的参数是字符串,我建议......

String x = new String();