do{
System.out.println();
System.out.println("==================");
System.out.println("Choose from the menu");
System.out.println("1.push.");
System.out.println("2.pop.");
System.out.println("3.peak.");
System.out.println("4.exit.");
int option=sc.nextInt();
if(option==1)
{System.out.println("Enter an integer to push into the stack: ");
integerin=sc.nextLine();
arrayStack.push(integerin);}
if(option==2)
{arrayStack.pop();
}
if(option==3)
arrayStack.peek();
System.out.print("Next step?[Y/N] ");
again = sc.nextLine();
System.out.println();
}while(again.equalsIgnoreCase("y"));
}
这个循环当中第一个if里的识别输入有什么办法可以实现?
nextInt 输入后有个换行,你需要先用nextLine 接受一下,否则下面的接受换行了,导致你无法输入
if(布尔表达式 1){
//如果布尔表达式1 的值为true执行代码
if(布尔表达式 2){
//如果布尔表达式2 的值为true执行代码
}
}
答案:
在Java中获取用户输入数据时,可以使用Scanner类中的nextLine()方法获取用户输入的一行数据。为了保证输入顺序的正确性,可以按照代码中需要输入的顺序要求用户输入数据,或者在获取用户输入数据之前先提示用户输入什么样的数据,以防止用户输入错误的数据。在if语句中判断输入顺序可以采用flag标志,即在输入完成后改变flag的值,在if语句中判断flag的值来确定输入的顺序是否正确。
示例代码如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数据");
int num1 = sc.nextInt();
System.out.println("请输入第二个数据");
int num2 = sc.nextInt();
boolean flag = false;
if (num1 < num2) {
flag = true;
}
if (flag) {
System.out.println("输入顺序正确");
} else {
System.out.println("输入顺序错误");
}
}
}
输出结果示例:
请输入第一个数据
3
请输入第二个数据
5
输入顺序正确
如果用户输入的顺序是5和3,那么输出结果将会是"输入顺序错误"。
另外需要注意的是,在if语句中不建议处理业务逻辑,可以使用异常来处理,更符合异常设计的初衷。
参考资料: