2016-11-21 4 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

複数の問題が見つかりました。 mainに非静的メソッドpopを呼び出すことはできません。

あなたはstatic Stack<String> stack;にグローバル変数にStack<String> stack;を更新し、メインでそれを初期化してから今staticを宣言しなければなりませんpopメソッドを呼び出す必要があります。

またはstackpopメソッドにパラメータを渡して、staticと宣言できます。

2

あなたはreverseStackで定義しているpopは引数を取りません。そのため、引数として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()); 
     } 
    } 
} 
関連する問題