在我的程序中,我正在读取数字和符号,直到用户给我们空行。编辑:基本上程序应该模拟从堆栈(10 个元素的数组)中添加/删除数字,并且有两个基本操作(添加:+ 并在下一行中添加一个数字并起飞:对于每个成功添加的数字程序应该打印:)是不可能的(超出数组范围)打印::(并且为了可能的删除打印数字;(如下)
*SAMPLE:*
INPUT:
+
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
0
+
1
-
-
-
-
-
-
-
-
-
-
-
OUTPUT:
:)
:)
:)
:)
:)
:)
:)
:)
:)
:)
:(
0
9
8
7
6
5
4
3
2
1
:(
import java.util.*;
public class Zadanie3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
String znak;
char helper;
int stack[]=new int[10];
int i =-1;
List<String> outcome = new ArrayList<>();
while (input.hasNext()){
znak=input.nextLine();
if(znak.isEmpty()){
break;
}
if(znak.charAt(0)=='+' && i<9){
znak=input.nextLine();
if(znak.isEmpty()){
break;
}
i++;
stack[i]=Integer.parseInt(znak);
outcome.add(":)");
}else if(znak.charAt(0)=='-' && i>=0 && i<=9){
outcome.add(String.valueOf(stack[i]));
i--;
}
else{
outcome.add(":(");
}
znak=input.nextLine();
if(znak.isEmpty()){
break;
}
if(znak.charAt(0)=='+' && i<9){
znak=input.nextLine();
if(znak.isEmpty()){
break;
}
i++;
stack[i]=Integer.parseInt(znak);
outcome.add(":)");
}else if(znak.charAt(0)=='-' && i>=0 && i<=9){
outcome.add(String.valueOf(stack[i]));
i--;
}
else{
outcome.add(":(");
}
}
for(String s: outcome) {
System.out.println(s);
}
}
}
输入空行后仍然没有停止 - 我试过在 while 和 if 中使用 input.isEmpty() 但它也不起作用。我给了一些空白空间。从 while 中删除 hasNext() 并用 isEmpty() 替换它,Equals() 给出了相同的结果。)
蓝山帝景
慕慕森
相关分类