Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建基于ArrayList的堆栈并在回文检测器中使用_Java_Arraylist_Stack_Palindrome - Fatal编程技术网

Java 创建基于ArrayList的堆栈并在回文检测器中使用

Java 创建基于ArrayList的堆栈并在回文检测器中使用,java,arraylist,stack,palindrome,Java,Arraylist,Stack,Palindrome,我需要创建一个myStack类,然后用它来测试回文。。。我选择创建一个基于ArrayList的堆栈实现 import java.util.ArrayList; public class myStack<AnyType>{ private ArrayList<AnyType> arr; public myStack(ArrayList<AnyType> a){ arr = a;

我需要创建一个myStack类,然后用它来测试回文。。。我选择创建一个基于ArrayList的堆栈实现

    import java.util.ArrayList;

    public class myStack<AnyType>{
        private ArrayList<AnyType> arr;

        public myStack(ArrayList<AnyType> a){
            arr = a;
        }

        public void push(AnyType element) {
                    arr.add(element);
        }

        public AnyType pop() {
            if(arr.size() == 0)
            {
                    System.out.println("Stack Underflow");
                    return null;
            }
            else
            {
                    AnyType element = arr.get(arr.size() -1);
                    arr.remove(element);
                    return element;
            }
        }

        public AnyType top() {
            if(arr.size() == 0)
            {
                    System.out.println("Stack Underflow");
                    return null;
            }
            else
                    return(arr.get(arr.size() -1));
        }
   }
import java.util.ArrayList;
公共类myStack{
私人ArrayList arr;
公共myStack(ArrayList a){
arr=a;
}
公共无效推送(任意类型元素){
arr.add(元素);
}
公共AnyType pop(){
如果(arr.size()==0)
{
System.out.println(“堆栈下溢”);
返回null;
}
其他的
{
AnyType元素=arr.get(arr.size()-1);
arr.remove(元素);
返回元素;
}
}
公共AnyType top(){
如果(arr.size()==0)
{
System.out.println(“堆栈下溢”);
返回null;
}
其他的
返回(arr.get(arr.size()-1));
}
}
然后我在一个叫做回文的类中使用它(尚未完成)

然而,当我编译时,它告诉我 注意:Palindrome.java使用未经检查或不安全的操作。 注意:使用-Xlint重新编译:未选中以获取详细信息。“

当我注释掉行myStack m=newmystack(test)


它是编译的,所以我知道这就是问题所在。。。为什么myStack类会成为问题?这与我在stack类中使用的“AnyType”有关吗

你的班级
myStack
。是模板类型
的泛型(因此出现警告)。请遵循Java命名约定,并重命名它
MyStack
。然后,将其与类型一起使用(在Java 7及以上版本中为
)-

//myStack m=新myStack(测试);

myStack m=新myStack();// 如果要对任何类型使用MyStack类,可以使用通配符“?”


因此,您的MyStack将是无界通配符类型的泛型类,因此可以保存任何内容。

我将添加一点透视图。。没有直接回答这个问题

  • stack和回文有什么关系
  • 泛型是稍微高级的/可选的概念。首先,还有更重要的事情要学。所以,如果你想的话,就把它修好。。但是你也可以忽略这个警告
  • 我更愿意将程序分为三个方面:(a)检查单个字符串是否为回文的方法(b)读取文件中的行的方法(c)检查字符串是否只包含数字和数字的方法
  • 编写单独的方法来实现每种方法,并获得最佳的代码质量,例如为每种方法引用stackoverflow
  • 将它们连接在一起以使最终程序正常工作
  • 我想。。。Java非常庞大,您需要有意识地推迟学习泛型之类的东西。 关注这些:

  • 面向对象设计-您可以编写StringUtil并添加 像checkPalindrome这样的静态方法
  • 变量和类命名约定(Java开发人员几乎一直遵循约定)
  • 我将为您的计划提出一个结构:

    • 您的主类应命名为FilePalindromeChecker
    • 使用静态方法创建一个StringUtil类以检查回文: 公共静态布尔检查回文
    • StringUtil中使用另一个静态方法检查字母数字:public 静态布尔检查回文
    快乐编码

    // myStack m = new myStack(test);
    myStack<Character> m = new myStack<>(); // <-- Please use MyStack.