如何使用来自不同类的参数调用方法

时间:2014-11-27 16:43:38

标签: java methods parameter-passing

可能的noob问题,但我不能在一个类中使用参数调用另一个类中的参数?

的Firstclass

public class Firstclass {

    public static void main(String[] args) {
        Test1 test = new Test1();
        test.Passingvalue();
        test.myMethod();

    }
}

二等

import java.util.Scanner;

public class Test1 {

    public void Passingvalue (){
        Scanner Scan = new Scanner(System.in);
        System.out.println("File Name ? ");
        String txtFile = Scan.next();
    }

    public void myMethod(String txtFile){

        System.out.print("Scan this file" + txtFile);

    }
}

5 个答案:

答案 0 :(得分:2)

您可以在方法名称后面的括号中以逗号分隔列表的形式提供参数:

public static void main(String[] args) {
    Test1 test = new Test1();

    test.myMethod("my_file.txt");
}

答案 1 :(得分:1)

不要忘记添加如下参数:

test.myMethod("txtFile");

答案 2 :(得分:1)

将字符串txtfile声明为两个方法之外的公共静态变量(在类test1的开头)。

public class Firstclass {

public static void main(String[] args) {
    Test1 test = new Test1();
    test.Passingvalue();
    test.myMethod();

}

}

import java.util.Scanner;

公共类Test1 {

String txtFile;

public void Passingvalue (){
    Scanner Scan = new Scanner(System.in);
    System.out.println("File Name ? ");
    txtFile = Scan.next();
}

public void myMethod(){

    System.out.print("Scan this file" + txtFile);

}

}

答案 3 :(得分:0)

当你调用参数化方法时,你必须将一个参数传递给调用方法,否则jvm将无法理解你调用的方法,因为我们可以过度加载方法。

所以问题的最终答案是

public static void main(String[] args) {
    Test1 test = new Test1();

    test.myMethod("place your file name here");
}

答案 4 :(得分:0)

我认为你有一个误解:

public void Passingvalue (){
    Scanner Scan = new Scanner(System.in);
    System.out.println("File Name ? ");
    String txtFile = Scan.next(); //method scope only
}

这里局部变量txtFile仅存在,直到方法Passingvalue(检查命名约定btw)完成,即它具有方法范围。因此,当调用myMethod(String txtFile)时,参数具有相同的名称,但在不同的范围内是不同的引用。

因此,您必须像其他人已建议的那样将文件名传递给您的方法,或者更改txtFile的范围,例如:使它成为一个实例变量:

public class Test1 {
  private String txtFile; //the scope of this variable is the instance, i.e. it exists as long as the instance of Test1 exists.

  public void Passingvalue (){
    Scanner Scan = new Scanner(System.in);
    System.out.println("File Name ? ");
    txtFile = Scan.next();
  }

  public void myMethod(){
    System.out.print("Scan this file" + txtFile);
  }
}

请注意,这只是为了说明当前的问题。还有其他问题,例如一般设计,没有解决。你的代码的目的似乎是学习,所以现在设计并不是一个大问题。

正如提示:我可能会从方法外部传递名称,或者在构造函数中传递/读取它。