在我的程序中,即时通讯会读取数字和符号,直到用户给我们空行。 编辑:基本上程序应该模拟从堆栈(10个元素的数组)中添加/删除数字,并且有两个基本操作(添加:+和下一行中的数字并起飞:对于每个成功添加的数字,程序应该打印:)不可能(超出数组范围)print::(为了可能的删除,打印数字;(如下所示)
*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()得到相同的结果。)
答案 0 :(得分:2)
要考虑一个小的实际例子
/json
答案 1 :(得分:0)
在多个位置中的while循环内将代码从if(znak.equals(""))
更改为if(znak.isEmpty())
,以打破循环并删除&& !input.equals("")
循环中的条件while
,我认为出现这种情况没有道理。
尝试以下
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 = input.nextLine();
if(znak.isEmpty()){
System.exit(0);
}
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);
}
}
}