2017-11-16 14 views
-1

주 메소드에서 isATens 메소드를 호출하려고하지만, isATens에 매개 변수가없는 경우에만이를 수행 할 수 있습니다. 나는 호출자와 동일한 매개 변수를 넣으려고했으나 그 중 하나를 인식하지 못합니다.main 메서드의 변수 매개 변수를 사용하여 메서드를 호출하는 방법은 무엇입니까?

public class P1L4 { 

    public static void main(String[] args) { 
     P1L4 main = new P1L4(); 
     main.run(); 
     isATens(userInput); //<--- this is what I've tried doing. 
    } 

    public void run() { 

     Scanner scanner = new Scanner(System.in); 
     System.out.println("Name a tens and i'll test if it's one under 100."); 
     int userInput = scanner.nextInt(); 
    } 

    public boolean isATens(int userInput) { 
     System.out.println(userInput); 
     switch (userInput) { 
      case 10 : case 20 : case 30 : case 40 : case 50 : case 60: case 70: case 80: case 90 : 
       isUnderOneHundred(continued); 
      default : 
       System.out.println("Not under one hundred"); 
     } 
     return true; 
    } 

    public boolean isUnderOneHundred(int continued) { 
     return true; 
    } 
} 
+0

userInput은 변수가 아니며, isATens (5) 또는 isATens ()를 사용하여 value.try도 아닙니다. 또한 isATens는 정적 메서드가 아니기 때문에 클래스 – Stultuske

+0

의 인스턴스를 통해 호출해야하며 main.isAtens (5)를 호출해야합니다. isUnderOneHundred 메소드는 무의미합니다. 'run' 메쏘드에' – pecks

+0

:'Scanner'를 읽은 후'isAtens (userInput)'. – AxelH

답변

1

범위와 인스턴스 대 정적 메서드에 대한 아직 익숙하지 않은 일부 Java 개념이 있습니다. 다음 주석을 이해하는 데 어려움이있는 경우 Java 교과서의 해당 장을 읽으십시오.

int userInput = scanner.nextInt();run() 메서드의 범위 내에서 선언되므로 main() 메서드에서는 볼 수 없습니다.

public int run() { 
    ... 
    int userInput = scanner.nextInt(); 
    return userInput; 
} 

당신은 종류를 사용하는 가시적 인 개념없이 인스턴스와 정적 방법을 혼합하고 있습니다 : 당신이 run() 메소드의 userInput 외부를보고 싶다면, 나는 그 메서드의 반환 값 만들 것 . 정적 메서드에서 인스턴스 메서드를 호출하려면 도트 앞에 인스턴스의 이름을 지정해야하므로 적어도 문제를 해결 한 후에 isATens(userInput); 대신 main.isATens(userInput);이어야합니다.

프로그램 논리가 이상합니다. 매개 변수가 100보다 작 으면 isUnderOneHundred(int continued)과 같은 메서드가 true를 반환하지만 해당 메서드는 매개 변수를 살펴 보지 않고 전달한 숫자에 대해 true를 반환합니다.