```java
while ( ???) {
int fig = sc.nextInt();
if (fig <= n) {
num[p++] = fig;
length++;
}
}
while表达式怎么写才能实现我按ctrl+z退出呢
###### 运行结果及报错内容
###### 我的解答思路和尝试过的方法
###### 我想要达到的结果
第1行中给出一个正整数n(不超出1000),表示菜品的数量,每个菜品使用1~n进行编号。 第2行输入若干以空格间隔的正整数,表示客人投出的最喜爱的菜品编号,以键盘结束符^Z或文件结束符结束输入。
按ctrl+z接受循环?这个功能的话一个单纯的控制台应用怕是做不了。因为这属于GUI中的监听键盘敲击事件。这里给出一份示例代码
package help;
import javax.swing.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class DEMO extends JFrame implements KeyListener
{
private static boolean isPress = true;
public DEMO()
{
getContentPane().setLayout(null);
setVisible(true);
this.addKeyListener(this);
}
public static void main(String[] args)
{
new DEMO();
while (isPress)
{
System.out.println("循环正在执行。。。");
}
}
@Override
public void keyTyped(KeyEvent e) {
}
// 按下了键时执行的方法
public void keyPressed(KeyEvent e)
{
if ((e.isControlDown()) && (e.getKeyCode() == KeyEvent.VK_Z))
{
isPress = false;
System.out.println("循环被停止。。。");
}
}
@Override
public void keyReleased(KeyEvent e) {
}
}
这个代码在运行的时候,当你按下ctrl+z时,控制台的打印循环就会被终止,不过,这个并不属于一个控制台应用,而是一个GUI应用。当你执行代码的时候,会出现一个很小的GUI界面盘踞在页面左上角。
写了一个,你可以参考着修改。
(1)可以用hasNext()来判断。
(2)也可以直接nextInt(),遇到ctrl+z会报NoSuchElementException,你捕获这个异常即可。
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
int a;
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext()){
a = scanner.nextInt();
System.out.println(a);
}
}
}