2014-11-27 2 views
0

가능한 멍청한 질문이지만 한 클래스의 매개 변수로 내 메서드를 가져올 수 없다.다른 클래스의 매개 변수를 사용하여 메서드를 호출하는 방법

최우수상을

public class Firstclass { 

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

    } 
} 

SecondClass

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); 

    } 
} 
+1

당신은 test.myMethod''에 매개 변수를 보내지 않고 있습니다. 그러면 어떻게 작동할까요, 마술일까요? –

+0

그게 어떻게 해야할지 물어보고있다 – Duda777

+0

당신은'System.out.println (...)'에 보내는 매개 변수를 예로들 수 있습니다. –

답변

0

입니다 : 여기

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

를 지역 변수 방법은 Passingvalue (확인 BTW 명명 규칙을 때까지 txtFile에만 존재)가 끝났습니다. 즉, 메소드 범위가 있습니다. 따라서 myMethod(String txtFile)을 호출 할 때 매개 변수의 이름은 같지만 다른 범위의 다른 참조입니다.

따라서 이미 제안 된 다른 파일 이름으로 메소드에 파일 이름을 전달하거나 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); 
    } 
} 

이는 단지 즉각적인 문제를 설명하기위한 것입니다. 다른 문제가 있습니다. 해결되지 않은 일반적인 디자인과 함께. 어쨌든 코드 목적은 배우는 것처럼 보이므로 디자인은 지금 큰 문제가 아닙니다.

힌트 : 나는 아마도 메서드 외부에서 이름을 전달하거나 생성자에서이를 읽거나 읽습니다.

+0

감사합니다. 이것은 ive가하려고했던 것입니다. – Duda777

1

과 같은 매개 변수를 추가하는 것을 잊지 마세요 : 쉼표가에서 분리 된 목록으로

test.myMethod("txtFile"); 
2

당신은 매개 변수를 제공 할 수 있습니다 메서드 이름 뒤에 괄호를 붙입니다.

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

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

매개 변수화 메서드를 호출 할 때 매개 변수를 호출 메서드에 전달해야 할 때 다른 매개 변수를 기반으로 호출하는 메서드를 다른 메서드로 이해할 수 없습니다. 메서드를 오버로드 할 수 있습니다.

그래서 질문의 마지막 대답은 당신이 여기에 오해가 생각

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

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

알았어. 내가 이해할 것 같아. 니가 시도했던 방식대로 할 수 없다. – Duda777

+0

. 시간을내어. –

1

문자열 txtfile을 (test1 클래스의 시작 부분에있는) 두 가지 메서드 외부에 public static 변수로 선언하십시오.

public class Firstclass { 

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

} 

}

수입 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); 

} 

}

관련 문제