スタックの運用:文字列を反転

2294 ワード


//Stack.java
public class Stack {
	private char[] stackArray;
	private int maxSize;
	private int top;

	public Stack(int max) {
		maxSize = max;
		stackArray = new char[maxSize];
		top = -1;
	}

	public void push(char element) {
		stackArray[++top] = element;
	}

	public char pop() {
		return stackArray[top--];
	}

	public char peek() {
		return stackArray[top];
	}

	public boolean isEmpty() {
		return top == -1;
	}

	public boolean isFull() {
		return top == maxSize - 1;
	}
}

//Reverser.java
public class Reverser {
	private String input;
	private String output;

	public Reverser(String in) {
		input = in;
	}

	public String doRev() {
		int stackSize = input.length();
		Stack stack = new Stack(stackSize);
		char c;
		for (int j = 0; j < stackSize; j++) {
			c = input.charAt(j);
			stack.push(c);
		}
		output = "";
		while (!stack.isEmpty()) {
			c = stack.pop();
			output += c;
		}
		return output;
	}
}

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
	public static void main(String[] args) throws IOException {
		String input, output;
		while (true) {
			System.out.println("Enter a String: ");
			System.out.flush();
			input = getString();
			if (input.equals(""))
				break;
			Reverser reverser = new Reverser(input);
			output = reverser.doRev();
			System.out.println("Reversed: " + output);
		}
	}

	private static String getString() throws IOException {
		InputStreamReader isr = new InputStreamReader(System.in);
		BufferedReader br = new BufferedReader(isr);
		return br.readLine();
	}
}

出力結果

Enter a String: 
samkee
Reversed: eekmas
Enter a String: 
...