Java 创建基于ArrayList的堆栈并在回文检测器中使用
我需要创建一个myStack类,然后用它来测试回文。。。我选择创建一个基于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;
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.