我在尝试实现一个简单的面向对象程序时遇到了一些严重的问题。我有一个堆栈类定义如下......
import java.io.*;
public class stack
{
// instance variables - replace the example below with your own
private int maxStack;
private int emptyStack;
private int top;
private int[] stack;
public stack(int size)
{
maxStack = size;
emptyStack = -1;
top = emptyStack;
stack = new int[maxStack];
}
public int push(int y)
{
top++;
stack[top]= y;
return 0;
}
public int pull(int y){
int temp = top;
top--;
return stack[temp];
}
public boolean isEmpty(){
return top == emptyStack;
}
public void print(){
for(int i =top;i<0;i--){
System.out.println("Position "+top+" "+stack[top]);
}
}
}
I am trying to reference this class from another class that I am calling...
import java.io.*;
public class stackTest
{
public void stackStarter(){
System.out.println("Welcome to our Stack Simulator");
InputStreamReader ir = new InputStreamReader(System.in);
BufferedReader bf = new BufferedReader(ir);
System.out.print("Enter number of elements : ");
String str = bf.readLine();
int num = Integer.parseInt(str);
stack testStack = new stack(num);
int test =5;
testStack.push(test);
}
public static void main(String[] args){
stackStarter TEST = new stackStarter();
}
}
我一直收到错误...无法找到符号 - 类stackStarter。我尝试将stackStarter方法中的所有代码放在main中,但我无法从静态main方法访问堆栈类......有什么想法吗?
答案 0 :(得分:1)
您应该实例化类而不是方法。您的main
方法应该是这样的:
public static void main(String[] args){
stackTest test = new stackTest();
test.stackStarter();
}
还有一件事,你应该在编写代码时遵循Java命名约定。
例如根据Java命名标准,stackTest
不是有效的类名,它应该是StackTest
。
答案 1 :(得分:0)
试试这个:
public static void main(String[] args)
{
stackTest TEST = new stackTest();
TEST.stackStarter();
}
答案 2 :(得分:0)
是的,它确实只显示了两个类stack和stackTest,没有类名为stackStarter,只有方法已在stackTest中定义,将构造函数stackStarter()更改为main()中的stackTest()并调用方法对象如下,它将编译并将正常工作,
public class stackTest
{
public void stackStarter(){
System.out.println("Welcome to our Stack Simulator");
InputStreamReader ir = new InputStreamReader(System.in);
BufferedReader bf = new BufferedReader(ir);
System.out.print("Enter number of elements : ");
String str = bf.readLine();
int num = Integer.parseInt(str);
stack testStack = new stack(num);
int test =5;
testStack.push(test);
}
public static void main(String[] args){
stackTest TEST = new stackTest();
TEST.stackStarter();
}
答案 3 :(得分:0)
请试试这个:
public class stackTest
{
static void stackStarter(){
System.out.println("Welcome to our Stack Simulator");
InputStreamReader ir = new InputStreamReader(System.in);
BufferedReader bf = new BufferedReader(ir);
System.out.print("Enter number of elements : ");
String str = bf.readLine();
int num = Integer.parseInt(str);
stack testStack = new stack(num);
int test =5;
testStack.push(test);
}
public static void main(String[] args){
stackStarter();
}
}
主要的“问题”是你希望stackStarter()成为“方法”,而不是“类”。所以你只需要调用它(而不是“新”)。
第二个“问题”是“main()”是一个静态类。所以如果你想从main()调用stackStarter(),那么starckStarter()也需要是静态的。