可能的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);
}
}
答案 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);
}
}
请注意,这只是为了说明当前的问题。还有其他问题,例如一般设计,没有解决。你的代码的目的似乎是学习,所以现在设计并不是一个大问题。
正如提示:我可能会从方法外部传递名称,或者在构造函数中传递/读取它。