Java如何读取数据,直到文件尾——while (sc.hasNext())

笔试题while(scanner.hasnextline())怎么让程序停止读取 当输入完之后输入:ctrl+z。 阅读详情

 1 输入空格隔开的数字,然后求和

import java.util.Scanner;

public class Test1 {
	 public static void main(String[] args) {
	        Scanner scan = new Scanner(System.in);
	 
	        double sum = 0;
	        int m = 0;
	 
	        while (scan.hasNextDouble()) {
	            double x = scan.nextDouble();
	            m = m + 1;
	            sum = sum + x;
	        }
	 
	        System.out.println(m + "个数的和为" + sum);
	        System.out.println(m + "个数的平均值是" + (sum / m));
	        scan.close();
	    }
}

运行结果:

1 2 3
3个数的和为6.0
3个数的平均值是2.0
 

 注意当在键盘输入Ctrl+Z之后,程序才停止读入,开始执行求和。


2 每次读取一行数据

import java.util.Scanner;

public class Test2 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		//是否还有下一行
		while (sc.hasNextLine()) {
			String str = sc.nextLine();//读取一行,保留空格
			System.out.println("输出:"+str);
		}
		
		sc.close();
	}
}

运行结果: 

123 456 789
输出:123 456 789
111   111   111
输出:111   111   111


3 每次读取一个数据

import java.util.Scanner;

public class Test2 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		//是否还有下一个元素
		while (sc.hasNext()) {
			String str = sc.next();//读取一个元素,不保留空格
			System.out.println("输出:"+str);
		}
		
		sc.close();
	}
}

运行结果:

123 456 798
输出:123
输出:456
输出:798
111   111   111
输出:111
输出:111
输出:111

想退出循环可以参考https://mp.youkuaiyun.com/postedit/88424076 


4 读取用空格分隔开的数字字符串,然后将其存入数组(刷题时常用)

基础的实现方式:

import java.util.Scanner;

public class Test {
	public static void main(String args[]) {
		Scanner sc = new Scanner(System.in);

		while (sc.hasNextLine()) {
		
			String[] str = sc.nextLine().split(" ");
			int[] num = new int[str.length];

			for (int i = 0; i < str.length; i++)
				num[i] = Integer.parseInt(str[i]);// 将字符串的数字保存到整型数组里

			for (int i = 0; i < num.length; i++)
				System.out.println("输出:"+num[i]);

		}

		sc.close();

	}
}

兼容性更强的实现方式 :

import java.util.Scanner;

public class Test {
	public static void main(String args[]) {
		Scanner sc = new Scanner(System.in);

		while (sc.hasNextLine()) {
			// String.trim()可以删除字符串首尾的空格。
			// String.split("\\s+") //用正则表达式匹配多个空格,即使遇到多个空格也能分隔
			String[] str = sc.nextLine().trim().split("\\s+");
			for(String s:str) {
				System.out.println(s);
			}
			int[] num = new int[str.length];

			for (int i = 0; i < str.length; i++)
				num[i] = Integer.parseInt(str[i]);// 将字符串的数字保存到整型数组里

			for (int i = 0; i < num.length; i++)
				System.out.println("输出:"+num[i]);

		}

		sc.close();

	}
}

123 456
123
456
输出:123
输出:456
   123   456
123
456
输出:123
输出:456


 

笔试常用:提取"[22,33,55]"中的数字,然后将这些数字存入数组。

        String str = "[22,33,55]";
        String strTmp=str.substring(1,str.length()-1);//取子串,从而去除掉头尾的"["和"]",从而strTmp="22,33,55"
        String[] strArray = strTmp.split(",");//按“,”切分字符串
        int [] numArray=new int[strArray.length];
        /* 将字符串数组 转换成 int数组 */
        for (int i = 0; i < strArray.length; i++) {
            numArray[i]=Integer.parseInt(strArray[i]);
        }

        /* 测试结果 */
        for (int i = 0; i < numArray.length; i++) {
            System.out.println(numArray[i]);
        }

 

利用正则表达式,从字符串中取出所有数字

        /* 取出字符串中所有数字 */
        String s1 = "a9fil3dj11P0jAsf11j";
        String[] exprs = s1.split("\\D+"); //非数字字符匹配。等效于 [^0-9]。
        for (int i = 0; i < exprs.length; i++) {
            System.out.println(exprs[i]);
        }

 执行结果:


9
3
11
0
11

注意:9上面有一行空格。


 

 

利用正则表达式,从字符串中取出所有英文字母

        /* 取出字符串中所有的字母 */
        String s2 = "a9fil3dj11P0jAsf11j";
        String[] exprs2 = s2.split("[^A-Za-z]");
        for (int i = 0; i < exprs2.length; i++) {
            System.out.println(exprs2[i]);
        }
        // \w  匹配任何字类字符,包括下划线。与"[A-Za-z0-9_]"等效。
        // \W  与任何非单词字符匹配。与"[^A-Za-z0-9_]"等效。

执行结果:

a
fil
dj

P
jAsf

j

注意:中间有几个空格


跳出循环的方法

import java.util.Scanner;
 
public class ScannerKeyBoardTest1 {
 
	public static void main(String[] args) {
 
		// 例:当输入"0"时,循环结束
		Scanner sc = new Scanner(System.in);
		while (!sc.hasNext("0")) {
			System.out.println("键盘输入的内容是:"+sc.next());
		}
	}
}

 

gRPC之gRPC开发流程与入门案例 阅读详情

相关推荐

离合器KP点自学习:从原理到工程实践的全景解析

本文全面解析了离合器KP点自学习的原理与工程实践,详细介绍了KP点的物理本质、控制价值及自学习方法。通过扭矩增量式和转速变化式学习法,结合不同变速箱构型的适配策略,提升离合器控制的精度与效率。文章还探讨了液压系统迟滞补偿和摩擦材料老化应对方案,为工程实践提供可靠保障。

weixin_33717117的博客 287

while(sc.hasNext())

import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(sc.hasNext()) { String str = sc.next(); System.out.pri...

cledwyn 9963

从原理到实战:ARS548 4D毫米波雷达数据处理与多模态融合全解析

本文深入解析了4D毫米波雷达ARS548的工作原理与数据处理全流程。从FMCW测距测速、MIMO虚拟天线阵列到点云生成的三步FFT处理,提供了详尽的Python代码实现。文章进一步探讨了与激光雷达、相机的多模态时空对齐与融合策略,并指导如何构建用于自动驾驶感知训练的多模态标注数据集,为相关算法工程师提供了从理论到实践的完整指南。

weixin_29161719的博客 366

如何让程序不停运行-while(sc.hasNext()){}的用法-Java

这段代码是什么意思?创建一个数组(int 类型)!第二个方括号中传入实参。

weixin_63912123的博客 1382

技能伤害继承英雄属性【War3地图编辑器】

风暴之锤跟随山丘之王的力量增长

ArYe 2302

避开这些坑,你的Python爬虫才能稳定爬取IEEE Xplore(含反爬策略与MongoDB存储实战)

本文详细介绍了如何构建稳定的Python爬虫系统以爬取IEEE Xplore学术论文,包括反爬策略、MongoDB存储优化和断点续传机制。通过动态等待时间算法、请求头指纹管理和会话保持策略,有效应对IEEE的反爬机制。同时,优化MongoDB数据结构和索引,提升存储效率。最后,强调法律合规与伦理考量,确保爬虫合法合规运行。

weixin_29031057的博客 1095

Java while(sc.hasNext())无法跳出循环的问题

所遇情况:当我们牛客网在线编程时 while(sc.hasNext()) 可以自己跳出循环,而在本地IDEA中使用while(sc.hasNext())是没有办法退出循环的,如何解决呢 以一道题来举例 牛牛下厨房: https://www.nowcoder.com/questionTerminal/ca5c9ba9ebac4fd5ae9ba46114b0f476 当在牛客网上运行时我们发现是没什么问题的 在本地IDEA运行时,我们发现程序处在死循环状态 原因:   hasNext()方法是如果此扫描器的输

unstoppable_t的博客 4097

Apache DolphinScheduler 实现了对 OceanBase 的元数据库支持

Apache DolphinScheduler 是一款开源的分布式工作流任务调度系统,它提供了可视化的工作流设计和调度功能,支持大数据任务的自动化调度和监控。最近的更新中,Apache DolphinScheduler 引入了对 OceanBase 数据库的元数据库支持,这为用户在大数据环境中管理和调度任务提供了更多选择。用户可以通过 DolphinScheduler 提供的可视化界面进行工作流的设计和调度,也可以通过 DolphinScheduler 提供的 API 进行任务的编程调度。

VavzNvml的博客 495

【java】关于sc.hasNext()在while语句中的使用

代码: while(sc.hasNext()) { int n=sc.nextInt(); System.out.println(n); } 关于上面的代码,我觉得是把输入放进一个缓冲区类似于集合,按下结束符后,将缓冲区(集合)里的元素分别一个个取出来,在while语句里进行运算,等到元素全部取出来后,计算机又等待输入。 ...

以后我要当村长 7032

YOLOv11 改进入门篇 | 从原理到代码:CBAM 注意力模块的插入与涨点验证

本文介绍了如何在YOLOv11模型中插入CBAM注意力模块以提升检测性能。CBAM包含通道和空间注意力两个子模块,通过双池化操作和MLP学习特征权重。文章详细解析了CBAM原理,提供了PyTorch实现代码,并建议在YOLOv11的Stage-3和Stage-4之间插入CBAM。实验表明,该方法在COCO数据集上使nano和small模型的mAP提升1.7-2.3个百分点,参数量仅增加0.27%,推理延迟增加0.1ms。最后给出了插入位置选择、通道缩减比等调优建议,验证了CBAM作为轻量级注意力模块的有效性

shrgegrb的博客 1301

CUDA:实现使用cuSolverSP底层API实现Cholesky因式分解(附完整源码)

CUDA:实现使用cuSolverSP底层API实现Cholesky因式分解(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 342

【java基础】解决Java中 while(Scanner.hasNext())一直为死循环的问题!

import java.util.*; public class ScannerKeyBoardTest { public static void main(String[] args) { // System.in代表标准输入,就是键盘输入 Scanner sc = new Scanner(System.in); // 增加下面一行将只把回车作为分隔符 // sc.useD

像雾像雨又像风_的博客 2万+

代谢组数据分析(三):代谢组降维分析

本文详细介绍了代谢组学中常用的降维分析方法,包括PCA、PLS-DA和OPLS-DA。PCA通过线性变换降低数据维度,便于数据可视化和异常值检测;PLS-DA是一种有监督的模式识别方法,适用于分类和预测;OPLS-DA通过正交分解避免过拟合,更准确地筛选差异代谢物。降维分析在揭示样本间差异和发现生物标志物方面具有重要意义

专注生信领域 3790

CTF刷题——BUUCTF杂项题

BUUCTF平台中的misc方向做题记录

xingxingk88的博客 815

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

渗透测试 ( 0 ) --- XSS、CSRF、文件上传、文件包含、反序列化漏洞

渗透测试 --- http协议、XSS、CSRF、文件上传、文件包含、反序列化漏洞

freeking101的博客 5541

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

hasNext()、next()、nextLine()

主要通过Scanner类说一下这几个函数。 一、hasNext()函数 先看一段代码: package AllTests; import java.util.Scanner; class NextNextLineNextIntTest { public static void main(String[] args) { System.out.println("随便输...

LeeeeC的博客 1375

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

JAVA基础:Scanner类中next(), nextLine(), hasNext(), hasNextLine()

2、判断输入的缓存中是否有效字符,遇到空格结束。3、如果只输入空格,不匹配,返回false。2、判断输入的缓存中是否有效字符,遇到回车结束。3、如果只输入回车,不匹配,返回false。二、nextLine() : 读取除回车以外的所有符号(整行内容),光标定位在下一行。一、next() : 只读缓冲区中空格之前的数据,并且光标指向本行。

上山的人 3954

Scanner、sc.hasNext()方法

1.退出Scanner方法 回车时退出 import java.util.Scanner; public class ScannerTest { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNextLine()) { String str = sc.nextLine(); if.

菜鸟的自我救赎的博客 2567

while循环连续输入类型(making~~)

while连续输入情况()

m0_62478418的博客 302

Java的Scanner中关于next()、nextLine()、hasNext()、hasNextLine()的说明

java.util.Scanner 是 Java5 的新特征,用于从键盘输入内容,读取到程序当中。 next() 与 nextLine() 区别 next(): 一定要读取到有效字符后才可以结束输入。 对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。 next() 不能得到带有空格的字符串。 nextLine()...

the Blog of Forward 8369

牛客网在线编程之——while(sc.hasNext())跳出循环的问题?

先上结论: 本地IDEA,while(sc.hasNext())是跳不出循环的(本地上可以通过某些方式跳出来这里不多讲),但是牛客上while(sc.hasNext()),当输入结束后能够跳出循环。 测试代码: import java.util.*; public class Main{ public static void main(String[] args) { ...

one_alone00的博客 3021

(大数+sc.hasNext()处理多次读入问题)N!

Given an integer N(0 ≤ N ≤ 10000), your task is to calculate N! InputOne N in one line, process to the end of file. OutputFor each N, output N! in one line. Sample Input1 2 3Sample Output1 2 6  解题:has...

708

解决Java中 while(Scanner.hasNext())一直为死循环的问题

使用Scanner类中的hasNest()方法进行键盘输入时,发现while循环老是停在那儿,等待输入,而不执行后面的语句。 import java.util.Scanner; public class ScannerKeyBoardTest { public static void main(String[] args) { // System.in代表标准输入,就是键盘输入 ...

春卷同学的博客 1万+
上一篇: Java中next() 与 nextLine() 区别
下一篇: 为什么Mysql用B+树做索引而不用B-树或红黑树
春卷同学
博客等级 码龄12年 1668粉丝 244原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值