java输入空行结束问题

 更新时间:2022年05月18日 09:51:26   作者:爽儿歪歪歪  
这篇文章主要介绍了java输入空行结束问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

java输入空行结束

最近两次笔试都被这一个问题困扰

如何在输入空行后停止输入,尝试了各种方法,以下是可以实现该目的的代码:

public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while(true){//第一处
String s = in.nextLine();
if(s.equals(""))//第二处
break;
System.out.println(s);
}
System.out.println("Over Input");
}

以上代码第一处判断条件可以替换为in.hasNextLine(),但是不可以是in.hasNext().第二处判断条件可以是s.isEmpty(),也可以是s.length == 0。

我查找资料发现:

next()与nextLine有以下区别:

next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。

简单地说,next方法不能得到带空格的字符串。

而nextLine()方法的结束符只是Enter键,即nextLine()方法返回的是Enter键之前的所有字符,它是可以得到带空格的字符串的。

java输入数据,空格继续,回车结束输入

普通版

可输入,可输出。带详细的注释

import java.util.Scanner;
public class SumDemo {
    public static void main(String[] args) {
        System.out.println("请输入两个数字,中间用空格隔开,例如5 5");
        //得到一个扫描器,用来扫描 系统的输入
        Scanner input = new Scanner(System.in);
        //申明一个临时的字符串变量temp,用来保存 扫描器读取的一行;
        String temp = input.nextLine();
        //temp字符串首先trim()一下,就是去掉两边的空白,
        //因为有的人可能输入的是 空格5空格5空格回车。.
        //所以去掉两边的空格变成 5空格5回车 就符合要求了
        //split(" ")方法表示,用空格去切割字符串,返回的结果是一个字符串数组
        String[] ss = temp.trim().split(" ");
        //从两个字符串中解析得到两个数字,并求和
        int num1 = Integer.parseInt(ss[0]);
        int num2 = Integer.parseInt(ss[1]);
        int sum = num1+num2;
        //输出结果
        System.out.println("输入的数字是"+num1+" "+num2+"两数的和是:"+sum);
        //养成良好的习惯,打开了的资源要记得关闭,我们打开了扫描器,就要关闭扫描器
        input.close();
    }
}

升级版

可重复输入数字,重复输出结果,并带退出功能、

import java.util.Scanner;
public class SumTest {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        while(true){
            System.out.println("如果输入exit,那么退出。输入两个数字,用空格隔开");
            String temp = input.nextLine();
            if(temp.trim().equals("exit")){
                break;
            }
            String[] ss = temp.trim().split(" ");
            int num1 = Integer.parseInt(ss[0]);
            int num2 = Integer.parseInt(ss[1]);
            int sum = num1+num2;
            System.out.println("输入的数字是"+num1+" "+num2+"两数的和是:"+sum);
        }
        input.close();
    }
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。 

相关文章

  • ActiveMQ结合Spring收发消息的示例代码

    ActiveMQ结合Spring收发消息的示例代码

    这篇文章主要介绍了ActiveMQ结合Spring收发消息的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • Java实现的模糊匹配某文件夹下的文件并删除功能示例

    Java实现的模糊匹配某文件夹下的文件并删除功能示例

    这篇文章主要介绍了Java实现的模糊匹配某文件夹下的文件并删除功能,涉及java针对目录与文件的遍历、匹配、判断、删除等相关操作技巧,需要的朋友可以参考下
    2018-02-02
  • SpringBoot整合Retry的详细指南

    SpringBoot整合Retry的详细指南

    在现代的分布式系统中,服务间的调用往往需要处理各种网络异常、超时等问题,重试机制是一种常见的解决策略,本文将通过一个具体的使用场景来详细介绍如何在 Spring Boot 应用中集成和使用 Spring Retry 技术,需要的朋友可以参考下
    2024-12-12
  • Spring AOP原理及动态代理

    Spring AOP原理及动态代理

    这篇文章主要介绍了Spring AOP原理及动态代理,文章通过围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • Java读取文件的简单实现方法

    Java读取文件的简单实现方法

    这篇文章主要介绍了Java读取文件的简单实现方法,通过一个读取txt格式的log文件为例,详细的讲述了Java读取文件的方法及原理,需要的朋友可以参考下
    2014-09-09
  • 基于Java字符串 "==" 与 "equals" 的深入理解

    基于Java字符串 "==" 与 "equals" 的深入理解

    本篇文章是对Java中的字符串"=="与"equals"进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • Java如何构造DSL方法重构

    Java如何构造DSL方法重构

    这篇文章主要介绍了Java如何构造DSL方法重构,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考价值
    2022-07-07
  • SpringBoot+Redis哨兵模式的实现

    SpringBoot+Redis哨兵模式的实现

    本文主要介绍了SpringBoot+Redis哨兵模式的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • java中ConcurrentHashMap的读操作为什么不需要加锁

    java中ConcurrentHashMap的读操作为什么不需要加锁

    ConcurrentHashMap完全允许多个读操作并发进行,读操作并不需要加锁。所以下面这篇文章主要给大家介绍了关于java中ConcurrentHashMap的读操作为什么不需要加锁的相关资料,需要的朋友可以参考下
    2018-10-10
  • SpringBoot前端传递数组后端接收两种常用的方法

    SpringBoot前端传递数组后端接收两种常用的方法

    这篇文章主要给大家介绍了关于SpringBoot前端传递数组后端接收两种常用的方法,文中通过代码介绍的非常详细,对大家的学习或者工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2024-04-04

最新评论