2 回答
TA贡献1843条经验 获得超7个赞
使小的工作示例考虑
Scanner input = new Scanner(System.in);
while (input.hasNextLine()){ // test for new input
String znak=input.nextLine(); // get input
if(znak.isEmpty()){ // see if empty
break;
}
System.out.println(znak);
}
TA贡献1856条经验 获得超17个赞
从更改代码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);
}
}
}
添加回答
举报