2016-11-21 1 views
1

그래서 프로그램에서 pop()을 사용하려고하는데 왜 실행되지 않는지 완전히 이해하지 못하고 있습니다. 내가 스캐너를 사용하고 있느냐? 누군가 내 코드가 왜 reverseStack에서 pop()을 (java.util.Stack) pop (stack)에 적용 할 수 없는지를 설명 할 수 있습니까? ^을 heres 코드내 스택 프로그램에 팝을 사용할 수 없습니다.

import java.util.*; 
public class reverseStack{ 

    Scanner scan; 
    Stack <String>stack; 
    public static void main(String [] args) 
    { 
     Scanner scan = new Scanner (System.in); 
     System.out.println("Type something: "); 
     Stack<String> stack = new Stack<String>(); 
     scan = new Scanner(scan.nextLine()); 
     while (scan.hasNext()){ 
      stack.push(scan.next()); 
     } 
     System.out.println(stack); 
     printStack(stack); 
     pop(stack); 
    } 


    private static void printStack(Stack<String>s){ 
     if(s.isEmpty()) 
      { 
      System.out.println("true"); 
     } 
     else { 
     System.out.println("false"); 
      } 
    } 
    void pop(){ 
     while(!stack.empty()){ 
      System.out.println(stack.pop()); 
     } 
    } 
} 

덕분에 사람

답변

1

여러 문제가 발견되었습니다. 정적이 아닌 메서드 popmain에 호출 할 수 없습니다.

당신은 static Stack<String> stack;에 글로벌 변수에 Stack<String> stack;를 업데이트하고 주에서 초기화 한 후 지금 static을 선언해야 pop 메소드를 호출해야 할 수도 있습니다.

또는 매개 변수를 stack에서 pop 메서드로 전달하고 static으로 선언 할 수 있습니다.

2

pop 당신이 reverseStack에서 정의하고하는 것은 인수를하지 않습니다. 그래서 stack을 인수로 전달할 수 없습니다.

0

주된 질문에 대한 대답은 pop() 메소드에 매개 변수가 필요하다는 것입니다. 첨부 파일이 작동해야합니다.

import java.util.Scanner; 
import java.util.Stack; 

public class ReverseStack2 { 

    public static void main(String [] args) { 
     Stack stack = new Stack(); 
     Scanner scan = new Scanner (System.in); 

     System.out.println("Type something: "); 
     scan = new Scanner(scan.nextLine()); 
     while (scan.hasNext()){ 
      stack.push(scan.next()); 
     } 
     System.out.println(stack); 
     printStack(stack); 
     pop(stack); 
    } 
    private static void printStack(Stack s){ 
     if(s.isEmpty()) { 
      System.out.println("true"); 
     } else { 
      System.out.println("false"); 
     } 
    } 
    private static void pop(Stack s){ 
     while(!s.empty()){ 
      System.out.println(s.pop()); 
     } 
    } 
} 
관련 문제