0
Я пытаюсь создать стек, который будет интерактивным для пользователя. Он даст выбор для посылки данных по одному или всех данных. Моя проблема заключается в том, что когда я пытаюсь всплывать только данные, это дает мне пустую строку.не удалось заполнить верхнюю часть стека
Вот мой код:
package Tugas;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.EmptyStackException;
import java.util.Scanner;
import java.util.Stack;
import java.util.logging.Level;
import java.util.logging.Logger;
public class myStack {
private static Stack<Integer> stack;
private static int size;
public static void main(String[] args) {
System.out.println("Enter amount numbers : ");
size = inputData();
createStack(size);
readData();
Scanner scanner = new Scanner(System.in);
System.out.println("Take it All (y) or one by one (n)");
String input = scanner.next();
if (input.equals("y")) {
writeData();
} else {
popData();
writeData();
String confirm;
Scanner scanner2 = new Scanner(System.in);
System.out.println("Take again ? ");
confirm = scanner2.next();
if (confirm.equals("y")) {
popData();
writeData();
}
}
}
private static void createStack(int size) {
stack = new Stack<>();
}
private static void writeData() {
int dataStack;
System.out.println(" The contains of data: ");
for (int i = 0; i < size; i++) {
try {
dataStack = stack.pop();
System.out.println("Value of stack at " + (i + 1) + " : " + dataStack);
} catch (EmptyStackException e) {
}
}
}
private static void readData() {
int data;
System.out.println("===== all data =====");
for (int i = 0; i < size; i++) {
System.out.print("The data at : " + (i + 1) + " : ");
data = inputData();
stack.push(data);
}
}
private static void popData() {
int dataStack;
System.out.println("=== Pop a data : ===");
dataStack = stack.pop();
}
private static Integer inputData() {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = null;
try {
input = br.readLine();
} catch (IOException ex) {
Logger.getLogger(Tumpukan.class.getName()).log(Level.SEVERE, null, ex);
}
int data = Integer.parseInt(input);
return data;
}
}
Спасибо за помощь ...
Не то, чтобы он решает что угодно, но вы не должны проглатывать исключения, как в методе 'writeData'. По крайней мере, распечатайте трассировку стека с помощью 'e.printStackTrace()'. – Pshemo
это дает мне исключение: Исключение в потоке «main» java.util.EmptyStackException – user2975455
Не отправляйте случайный комментарий с самой полезной информацией в вопросе. Вам необходимо ** скопировать и вставить ** ** полную статистику стека **, указывающую, какие номера строк указаны ** в вопросе **. –