Java 堆栈 class / 回文 class
Java Stack class / Palindrome class
问题:开发堆栈 class(需要(至少)push、pop 和 isEmpty 方法)(堆栈中唯一可以 use/have 的数据结构 class 应该是一个字符数组)
其次,开发第二个名为 Palindrome 的 Java class,它在其 main 方法中接收一个字符串作为命令行参数,然后使用 Stack 对象检查给定的字符串是否是不是回文
回文 class 将是唯一一个使用 main() 方法接收命令行参数(只有一个没有空格的字符串)并检查它是否为回文的回文。它通过创建 class Stack 的对象并在算法的某些部分调用其方法来实现。
答案:
public class Stack {
private int position, capacity;
private char[] stack;
public Stack(int n) {
capacity = n;
position = -1;
stack = new char[capacity];
}
public void push(char obj) {
// stack is not full
position++;
stack[position] = obj;
}
public char pop() {
// stack is not empty
char temp = stack[position];
position--;
return temp;
}
public boolean isEmpty() {
return position == -1;
}
public char peek() {
return stack[position];
}
public boolean isFull() {
return position == capacity - 1;
}
}
public class Palindrome {
public boolean same(char ch1, char ch2) {
return (ch1 == ch2) ? true : false;
}
public boolean palindrom(String s) {
int len = s.length();
char token = 0;
Stack stack = new Stack(len);
for (int i = 0; i < len; i++) {
token = s.charAt(i);
if (token != ' ')
stack.push(new Character(token));
}
for (int j = 0; j < len; j++) {
token = s.charAt(j);
if (token != ' ')
if (!same((Character) (stack.pop()), s.charAt(j)))
return false;
}
return (stack.isEmpty()) ? true : false;
}
public String reverse(String original) {
String reverse = "";
int length = original.length();
for (int i = length - 1; i >= 0; i--)
reverse = reverse + original.charAt(i);
return reverse;
}
public static void main(String[] a) {
Palindrome s = new Palindrome();
System.out.println( s.palindrom(a[0]) ? "Palindrome" : "Not Palindrome");
}
}
Error: Exception in thread "main"
java.lang.ArrayIndexOutOfBoundsException: 0 at
Palindrome.main(Palindrome.java:41)
System.out.println( s.palindrom(a[0]) ? "Palindrome" : "Not Palindrome");
您可能不是来自命令行的 运行 这个程序,因此数组 a 是空的。
How to run Java program from the command line with arguments
问题:开发堆栈 class(需要(至少)push、pop 和 isEmpty 方法)(堆栈中唯一可以 use/have 的数据结构 class 应该是一个字符数组)
其次,开发第二个名为 Palindrome 的 Java class,它在其 main 方法中接收一个字符串作为命令行参数,然后使用 Stack 对象检查给定的字符串是否是不是回文
回文 class 将是唯一一个使用 main() 方法接收命令行参数(只有一个没有空格的字符串)并检查它是否为回文的回文。它通过创建 class Stack 的对象并在算法的某些部分调用其方法来实现。
答案:
public class Stack {
private int position, capacity;
private char[] stack;
public Stack(int n) {
capacity = n;
position = -1;
stack = new char[capacity];
}
public void push(char obj) {
// stack is not full
position++;
stack[position] = obj;
}
public char pop() {
// stack is not empty
char temp = stack[position];
position--;
return temp;
}
public boolean isEmpty() {
return position == -1;
}
public char peek() {
return stack[position];
}
public boolean isFull() {
return position == capacity - 1;
}
}
public class Palindrome {
public boolean same(char ch1, char ch2) {
return (ch1 == ch2) ? true : false;
}
public boolean palindrom(String s) {
int len = s.length();
char token = 0;
Stack stack = new Stack(len);
for (int i = 0; i < len; i++) {
token = s.charAt(i);
if (token != ' ')
stack.push(new Character(token));
}
for (int j = 0; j < len; j++) {
token = s.charAt(j);
if (token != ' ')
if (!same((Character) (stack.pop()), s.charAt(j)))
return false;
}
return (stack.isEmpty()) ? true : false;
}
public String reverse(String original) {
String reverse = "";
int length = original.length();
for (int i = length - 1; i >= 0; i--)
reverse = reverse + original.charAt(i);
return reverse;
}
public static void main(String[] a) {
Palindrome s = new Palindrome();
System.out.println( s.palindrom(a[0]) ? "Palindrome" : "Not Palindrome");
}
}
Error: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at Palindrome.main(Palindrome.java:41)
System.out.println( s.palindrom(a[0]) ? "Palindrome" : "Not Palindrome");
您可能不是来自命令行的 运行 这个程序,因此数组 a 是空的。
How to run Java program from the command line with arguments