在这个题目里我自己写了一个操作字符的栈,用来判断字符串是不是回文;
我现在竟然还不知道怎么从键盘输入内容,昨天查了帮助文档才知道一点,原来自己不是一般的菜,惭愧啊
自己写的字符栈
public final class MyStack
{
int length;//记录栈的存储情况
char ca[];
public MyStack(int size)
{
length = 0;
ca = new char[size];
}
public void push(char c)
{
this.ca[length++] = c;
}
public boolean check(char c)
{
if(c!=this.ca[--length])//判断两个字符是不是相等,相等则返回true,不能则返回false
{
return false;
}
return true;
}
}
/*
* 问题:编写程序要求判断从键盘输入的字符串是否是会问字符串
* 思路:利用栈的存储结构来判断,把前一半压栈,后一半一个一个比较如果相等则弹栈,不等则直接输出不是回文数组
* 如果比对完,那么则是回文串
* */
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ReserveStringDemo
{
public static void main(String[] args) throws IOException
{
ReserveStringDemo rs = new ReserveStringDemo();
rs.go();
}
public void go() throws IOException
{
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));//DataInputStream类的readLine方法那里的推荐方式
System.out.println("请输入一个字符串:");
String str = br.readLine();//读入一个字符串
int i = 0;
int strlen = str.length();
//自己写的一个栈,可以动态分配空间
MyStack ms = new MyStack(strlen/2);
//前一半压栈
while(i<strlen/2)
{
ms.push(str.charAt(i++));
}
i =(strlen+1)/2;//考虑到字符串字符个数的奇偶
//后一半比较
while(i<strlen&&ms.check(str.charAt(i++)))
{
}
//利用三目运算符?:来拼接结果字符串
System.out.println("该字符串"+(i>=strlen?"是":"不是")+"回文字符串");
}
}