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());
		}
	}
}

 

Transformer模型详解(图解最完整版) Transformer由论文提出,现在是谷歌云TPU推荐的参考模型。论文相关的Tensorflow的代码可以从GitHub获取,其作为Tensor2Tensor包的一部分。哈佛的NLP团队也实现了一个基于PyTorch的版本,并注释该论文。在本文中,我们将试图把模型简化一点,并逐一介绍里面的核心概念,希望让普通读者也能轻易理解。Transformer 与 RNN 不同,可以比较好地并行训练。 阅读详情

相关推荐

SAP软件外币评估系统配置与操作

文章摘要:本文详细介绍了SAP系统中外币评估的流程、策略及系统操作。外币评估是期末关账的重要环节,主要针对外币未清项目及资产/负债进行汇率重估,生成评估差异过账以反映真实财务状况。文中阐述了三种评估策略(不评估、增量评估、期末评估冲回)及适用场景,并提供了SAP系统外币评估的具体操作步骤(FAGL_FCV/FAGL_FC_VAL事务码)。同时,讲解了货币资金科目和未清项管理科目的评估差异处理方式,以及相关的系统配置(OB59、OBA1等)。文章还区分了已实现和未实现汇兑损益的会计处理,为企业外币业务管理提供

weixin_40672823的博客 1959

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

vivado生成及调用自定义IP的方法

开发环境:vivado 2018.2 1.将整个工程封装为自定义IP 将整个工程封装为自定义IP主要有以下步骤: 步骤1.选中工程中的top模块。点击Tools ------> Create and Package New IP,如图1所示 图1 步骤2.弹出界面后,点击next至图2界面,选择Package your current project,然后继续点击next 图2 步骤3.选择生成的IP路径,如图3所示。这个路径就是后续添加该IP的路径 图3 步骤4.继续点击next,然后选择fi

进击的阿日比 4730

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

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

weixin_63912123的博客 1382

避开STM32中断优先级配置的坑:HAL_NVIC_SetPriority()参数你真的用对了吗?

本文深入解析STM32中断优先级配置中的关键问题,重点剖析HAL_NVIC_SetPriority()函数的正确使用方法。通过实际案例揭示优先级分组设置、抢占优先级与子优先级的区别,提供多中断系统中的优化策略和调试技巧,帮助开发者避免常见配置错误,提升系统稳定性。

weixin_42532938的博客 421

使用 Python 和可视化编程控制树莓派机械臂myCobot

这些模块包括逻辑、循环、数学、文本、列表、颜色、变量、函数以及控制机械臂的函数等等,所以用户可以轻松入门编程,只需单击右上角的运行就可以启动程序,做一些有趣的应用。可以搭配任意摄像头进行图像识别,具有4个 USB 端口,可以通过 Raspberry Pi 的微型 HDMI 端口连接到显示器. 最后,40 个GPIO 接头可以进行更多扩展应用,机械臂每个接口都有清晰的标记,面板上还有一个电源开关和一个直流电源插孔。您现在可以将机器人放在地板或桌子上,并用力拧紧吸盘,以确保机械臂的底座在操作过程中不会移动。

m0_62456998的博客 3966

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

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

unstoppable_t的博客 4097

【硬件开发】振铃

如果是开关管的振铃,那么桥臂的SW处产生的振铃会窜入驱动电路,造成的结果就是驱动电路和上桥臂下桥臂之间的SW节点都会有振铃现象。如果是驱动电路的振铃,那么MCU的输出引脚还是正常的PWM,但是到了MOS管两侧就变成带有振铃的PWM波形了。开关振铃产生的原因是MOS管上面的寄生电感当开关管打开时为了保持电流不变感应出的电压会对电源和地产生冲击。开关管的驱动线上的寄生电容和寄生电感导致的振铃为驱动电路振铃。开关管上的寄生电容和寄生电感导致的振铃为开关节点振铃。、电感等元件的存在,导致电路中的电压和。

weixin_62546664的博客 1827

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

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

以后我要当村长 7032

Python re库【正则表达式操作库】全面讲解及代码示例

以下是Pythonre库的全面讲解,包含主要功能、常用方法及代码示例。完整代码和注释附后。正则表达式(Regular Expression)是用于匹配、查找、替换字符串的工具,通过特定语法定义模式。?{n}[...][a-z]A|B\d[0-9]\D\s\S\w\Wre从字符串匹配模式,返回Match对象或None。在字符串中第一个匹配项,返回Match对象或None。返回所有匹配项的。返回所有匹配项的Match对象)。替换匹配项,返回新字符串。根据模式分割字符串,返回列表。通过。

记录点滴 1161

Simulink仿真模块 -Scope

如果您将 Scope 模块放在具有锁定链接的库或者锁定的库中,当尝试打开示波器窗口时,Simulink 会显示错误。要显示某个库模块中的内部数据,请为库模块添加一个输出端口,然后将此端口连接到您模型中的 Scope 模块。当您在示波器内可视化多个基于帧的信号时,部分帧大小为 1 的信号采样可能不会显示。当在示波器内可视化多个基于帧的信号时,部分帧大小为 1 的信号采样可能不会显示。如果在仿真开始时波形视图关闭,则当在仿真后打开波形视图时,波形视图将显示附加的输入信号的仿真结果。

jk_101的博客 3790

【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万+

ruoyi-nbcio-plus基于vue3的flowable服务任务的升级修改

ruoyi-nbcio-plus基于vue3的flowable服务任务的升级修改

宁波阿成的博客 847

CTF刷题——BUUCTF杂项题

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

xingxingk88的博客 815

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

渗透测试 ( 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

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

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、付费专栏及课程。

余额充值