解决Java 中while(Scanner.hasNext())死循环问题

本文探讨了在Java中使用Scanner类时遇到的死循环问题,特别是在无终止符的输入场景下。通过对比两种方法,一种是检查空字符串退出循环,另一种是使用Ctrl+z终止输入,文章提供了一个实用的解决方案,即在不再输入内容时按Enter键即可退出循环。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解决Java 中while(Scanner.hasNext())死循环问题

摘要:最近几天在用牛客刷题,遇到需要使用Scanner输入的问题。这类题有时候并不会有提到设置终止符来停止Scanner的录入。在网上翻看了不少的方法,发现没有适用的(我用的是 idea编辑器)。下面先把前人的经验说一下(虽然我用的时候不起作用)

1.原文链接

这个方法我试了一下,当不输入内容,按两次 Enter 键,系统并没有退出



import java.util.Scanner;
/*
 *   按"Enter",读取每行输入的有效数据及最后自动结束
 */
public class ScannerEnd {
 	public static void main(String[] args) {
  		Scanner sc = new Scanner(System.in);
  		while (sc.hasNextLine()) {
   		String str = sc.nextLine();
   		if (str.isEmpty())
    			break;
   			System.out.println(str);
  		}
  		sc.close(); 
 	}  
}

2.

还有一个博主说 不想输入时 按下 “Ctrl + z”,就会终止录入,然并卵

我自己的

当不再输入内容时,按下 Enter 键,不再进入 while 循环,然后关闭录入端口。

import java.util.*;

public class Main{
	public static void main(String args[]){
		Scanner in = new Scanner(System.in);
		String input = new String();
		while (!(input = in.nextLine()).isEmpty()){
		
			System.out.println("out");
		}
		in.close();
	}
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值