私は、JavaのStackを使用して文字列値をプッシュしようとしています。その名前は、Scannerメソッドからの入力から派生しています。私はその後、スタックから名前をポップしたいと思った後、スタックの論理的および物理的な要素を表示します。私はArray Stackを使うべきだと思っていますが、Stacksについての質問や経験はあまりないので、完全にはわかりません。文字列要素でJavaスタックを使用する
現在、Stack.javaファイルをコンパイルするときに次のエラーが発生しています。
Stack.java:24: cannot find symbol
symbol : method push(java.lang.String)
location: class java.lang.String[]
stack.push(s);
私はこれを調査し、日ごとに異なるコードをしようと、私はこれに非常に新しいです、と私はそれを動作させるためのコードを操作する方法がなくなってきたようにしてきました。
私はいくつかのアドバイスに感謝します... tnx!一般的に、私は、スタック内のメソッドを呼び出し、
import java.lang.*;
import java.util.*;
public class Stack { //Create Class
private String stack[] ;
private int top;
private static final int SIZE = 5;
String name;
Scanner scan = new Scanner(System.in);
public Stack(int SIZE){
stack = new String [SIZE];
top = 0;
}
public void push(String s) { //Method to Insert
if (isStackFull())
System.out.println ("Stack is Full "); //If Stack full Print Full
else {
while (scan.hasNextLine()){
s = scan.nextLine();
stack.push(s);
}
stack[top] = s;
top++;
}
}
public String pop() { //Method to Delete
if (isStackEmpty())
System.out.println ("Stack is Empty "); //If Stack empty print Empty
else{
String value = stack[top];
top--;
return value;
}
return stack[top];
}
public String toString(){ //Method print Logical Stack
if (isStackEmpty())
System.out.println ("Stack is Empty "); //If Stack empty print Empty
else
System.out.println("\nThe Stack");
String result = "";
for (int j=0; j < top; j++)
result = result + stack[j].toString() + "\n";
return result;
}
public boolean isStackEmpty() { //Method boolean type to check empty Stack
return (top == 0);
}
public boolean isStackFull() { //Method boolean type to check full Stack
return (top == (SIZE-1));
}
}
StackTestコードの場合:
は、ここに私のStackクラスのコードです。例えば。コメント付きのコードに以下に示すように
public class StackTest { //Create class
public static void main(String[] args){ //Main Method
Stack n = new Stack(); //Declare variables
Scanner in = new Scanner(System.in);
String response;
char x;
とあなたのpush(String s)
ある方法が間違っているString
にpush()
呼びかけている
while(x != 'q' && x != 'Q'){ //While loop initiates if no q or Q char input
switch(x){ //Start of swtich for insert, delete, print physical, logical or default quite
case 'i':
n.push();
System.out.println ("Inserted item from Stack");
break;
case 'd':
n.pop();
System.out.println ("Deleted item from Stack");
break;
case 'p':
n.toString();
System.out.println ("Printed Physical Stack ");
break;
'stack'は' push'メソッドを持たないString配列です。 – shmosel
スレッドセーフティが不要な 'Stack'実装が必要な場合は、[' ArrayDeque'](https://docs.oracle.com/javase/8/docs/api/java/util/ArrayDeque.html)より好ましい。 – 4castle