首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我需要用户输入我的2个doubles,但是有一个初始化错误,但是我不想要doubles的集合数字(Java)

在Java中,如果你需要用户输入两个double类型的数字,但是希望避免输入集合数字的情况,你可以使用以下代码来实现:

代码语言:txt
复制
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        double number1 = 0.0;
        double number2 = 0.0;
        Scanner scanner = new Scanner(System.in);
        
        boolean validInput = false;
        while (!validInput) {
            System.out.print("请输入第一个double类型的数字:");
            if (scanner.hasNextDouble()) {
                number1 = scanner.nextDouble();
                validInput = true;
            } else {
                System.out.println("输入无效,请重新输入。");
                scanner.next(); // 清除无效输入
            }
        }
        
        validInput = false;
        while (!validInput) {
            System.out.print("请输入第二个double类型的数字:");
            if (scanner.hasNextDouble()) {
                number2 = scanner.nextDouble();
                validInput = true;
            } else {
                System.out.println("输入无效,请重新输入。");
                scanner.next(); // 清除无效输入
            }
        }
        
        scanner.close();
        
        // 执行你的业务逻辑
        // ...
        
        System.out.println("输入的两个double数字为:" + number1 + " 和 " + number2);
    }
}

上述代码中,我们使用了Scanner类来获取用户的输入。首先,我们初始化了两个double类型的变量number1number2,并创建了一个Scanner对象scanner来读取用户的输入。

然后,我们使用一个循环来确保用户输入的是有效的double类型数字。在每次循环中,我们首先提示用户输入第一个数字,并使用scanner.hasNextDouble()方法来检查输入是否为double类型。如果是,我们将输入的值赋给number1变量,并将validInput标记为true,退出循环。如果输入无效,我们输出错误信息并使用scanner.next()方法清除无效输入,然后继续循环直到得到有效的输入。

接下来,我们使用类似的方式获取用户输入的第二个数字,并将其赋给number2变量。

最后,你可以在代码中执行你的业务逻辑,然后输出用户输入的两个double数字。

这是一个简单的示例,你可以根据自己的需求进行修改和扩展。关于Java的输入输出和Scanner类的更多信息,你可以参考腾讯云的Java开发者指南:Java开发者指南

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Java8 Stream

概述 Java8 API中添加了一个抽象成为流Stream,可以以一种声明方式处理数据。 Stream与java.io包中InputStream和OutputStream是完全不同概念。...Java8中Stream是对集合对象功能增强,专注与对集合对象进行各种非常便利、高效聚合操作,或大批量数据操作。...Stream就像一个高级版本迭代器,用户只要给出需要对其包含元素是执行什么操作,Stream会在内部隐式进行遍历,做出相应数据转换。...使用 使用Stream步骤如下: 创建Stream 通过一个或多个中间操作将流转换成另一个流 通过中止操作获取结果. 1.创建Stream 集合类Collection: stream(): 创建串行流...,指定数组范围 数字类: IntStream: 整型流接口, 有如下静态方法: empty(): 获取一个串行流 generate(IntSupplier): 返回指定接口产生数字无限流 of(

66630

Architecting Android with RxJava

过去几年中HTTP错误已经不是什么新鲜事了,但是现在,我们不得不进行容错机制,还要提供用户易读以及合理消息更新。 在过去,我们写简单桌面应用,但如今我们写能够做出快速响应Web应用。...可扩展意味着能够应对日益增长数据,在负载情况下不会崩溃。 对故障/错误做出及时响应,能够提高系统容错性。 响应意味着对能够对用户操作及时做出反应。...在Android中最容易出现Backpressure就是连续快速点击跳转界面、数据库查询、文件扫面、键盘输入,甚至联网等操作都有可能造成Backpressure,可能有些情况并不会导致程序崩溃,但是会造成一些我们不想见到小麻烦...从Openweathermap给出资源(下载city.list.json)中,整理需要城市Json字符串,整合了经纬度,以备不时之需。 找到了一个通过Location查询所在地API。...搜索界面SearchActivity,输入关键字请不要以市、区结尾,例如,北京而不是北京市,因为API不支持,也没办法 :( 。

47210

为什么我们要尝试Kotlin

所以在这些分享中并没能给出一个很好答案,而这个问题本身也引起了思考。...) 简单一行代码便实现了一个包含了constructor以及默认getters, toString, equals, hashCode和copy实现Pojo,而同样java实现需要大概50多行代码...Kotlin还在Java集合基础上进行了封装,并提供了非常丰富集合操作。同时结合非常简洁Lambda表达式,使得调用更加精简。...同样规模微服务用Java编写情况下代码量将远大于这个数字。 ---- 安全 Safe 许多编程语言(包括 Java)中最常见陷阱之一是访问空指针,导致空指针异常。...但是实际情况可能是项目已经开始了一段时间,我们已经用Java为项目构建了很多功能。这个时候引入一个语言可能会给项目带来一定风险。那么我们可以如何开始呢?

87250

Rust开发⼲货集(1)--迭代器与消费器

iter() 转移所有权 先简单解释下什么叫"转移所有权": 在 Rust 中,"转移所有权"(Ownership Transfer)是一种核心概念,它涉及变量和数据所有权从一个实体转移到另一个实体...这意味着 s1 不再有效,因此接下来如果使用 s1 将导致编译错误。 iter() 在 Rust 中用于创建集合迭代器,比如在数组或向量上。iter() 不会转移集合所有权。...即 iter_mut() 用于需要修改集合中元素场景,但并不转移所有权; 而 into_iter() 用于需要转移元素所有权场景。...如下例: 假设有一个Vec,其中包含一些数字引用,现在想要迭代这些数字拷贝而不是引用本身: use std::any::type_name; fn print_type_of(_: &T)...可变引用目的是允许修改集合元素,而不是创建它们拷贝。如果需要修改元素并且需要它们拷贝,应该首先通过其他方式创建拷贝,然后对这些拷贝进行修改。

12910

Python学习手册(第4版).4

由于 ' 和 " 会引起歧义,因此,我们在它前面插入一个\表示这是一个普通字符,代表字符串起始,因此,这个字符串又可以表示为 'Bob said \"I\'m OK\".'...文本模式匹配是本书范围之外一个高级工具,但是有其他脚本语言背景读者也许对在Python中进行模式匹配很感兴趣,我们需要导入一个名为re模块。...Pattern对象是不能直接实例化,只能通过compile方法得到。 列表是一个任意类型对象位置相关有序集合,它没有固定大小。...Python列表与其他语言中数组有些类似,但是列表要强大得多。其中一个方面就是,列表没有固定类型约束。..., 'remove', 'reverse', 'sort' 想要了解每个函数用法,就help(a.函数),下面的数据类型同 2.先创建一个字符串b,然后dir(b),就能够得到内置所有字符串可以进行操作

1.2K30

浅谈Kotlin(二):基本类型、基本语法、代码风格

一、基本类型   在 Kotlin 中,所有变量成员方法和属性都是一个对象。   一些类型是内建,它们实现是优化过,但对用户来说它们就像普通类一样。 ?...①、变量var语法     很奇怪java中 变量 并不要求要初始值,我们看下Kotlin中 不给一个变量初始化会发生什么。 ?     结果是报错:提示需要添加一个初始值。     ...②、常量val语法:     声明常量时候和变量一样也需要提供一个初始值,并且这个值是之后无法修改。   ?     上面可以看到,定义了一个Int类型常量age ,值为1。      ...但是有个疑惑,如果一个方法不需要返回值呢,类似于Java void       Kitlin是用Unit处理,可以看到,sum方法没有返回值, 调用时候 ?  ...写法是错误,无法将一个无返回值方法转为某一个类型。       正确写法如下:   override fun onCreate(savedInstanceState: Bundle?)

55930

Spring Boot 系列 —— Spring Webflux

如果一个函数满足函数式接口定义,那么即使标注为@FunctionalInterface,编译器依然会把它看做函数式接口。...这里需要强调是,函数式接口只能有一个抽象方法,而不是只能有一个方法。 Functional 接口 Functional 类型接口都在 java.util.function 包下。...注意,所有的信号事件, 包括代表终止信号事件都是可选:如果没有 onNext 事件但是有一个 onComplete 事件, 那么发出就是 空 有限序列,但是去掉 onComplete 那么得到就是一个...Flux Flux integerFlux = Flux.range(3,4); // 创建一个能提供 3,4,5,6 四个 Integer 类型数字 List doubles...你需要提供一个 Supplier 来初始化状态值,而生成器需要 在每一“回合”生成元素后返回新状态值(供下一回合使用)。

1.4K10

提升编程效率利器: 解析Google Guava库之常用工具类-40个示例(七)

com.google.common.collect:这个包提供了带泛型集合接口扩展和实现,以及工具类。...它增加了一些Java标准库中没有的集合类型,如Multimap(多映射)、Multiset(多集)等,还提供了一些用于操作集合实用方法。...com.google.common.eventbus:这个包实现了一个发布-订阅风格事件总线,允许在不同组件之间发布和订阅事件,实现松耦合通信。...com.google.common.math:这个包提供了原始算术类型和超大数运算工具类,用于进行数学计算和处理大数字。...通过使用Guava库,开发者可以更加高效地处理集合、缓存、并发编程、字符串处理、I/O操作等各种常见开发任务。

16010

别再造轮子了,Google 开源 Guava 工具库真心强大!

需要支持突变,并且可以节省时间和空间,所有不可变集合实现都比它们可变同级更节省内存。 可以用作常数,并期望它将保持不变。 2、要点:每个 Guava 不可变集合实现都拒绝 null 值。...Multiset 可重复集合 1、Guava 提供了一个集合类型 Multiset,它支持添加多个相同元素,其中成员可以出现不止一次。...BiMap 双向映射 1、将值映射回键传统方法是维护两个独立映射,并使它们保持同步,但这很容易产生错误,并且当映射中已经存在一个值 Map nameToId = ...Guava 提供了一个集合类型 Table,它支持任何“row”类型和“column”类型这个用例。...4、CharMatcher 字符匹配器,用于匹配字符,可以将 CharMatcher 视为代表一类特定字符,如数字或空白。

95631

正则和TypeScript很重要

关于浏览器插件 由于打卡规则变化,由之前企业微信打卡,变成现在PC一个系统打卡。今天在想是不是也开发一个打卡插件,支持多系统登录,选择时间段打卡...。 仔细想了想还是算了,以后再说吧。...想表达意思主要是,结合以往经验,似乎所有的框架,或者js库源码里都会涉及到正则表达式,而大部分前端人员平时在写业务代码时候精力并没有放在正则上,比如我自己,需要正则表达式时候,会直接去百度某个类型正则表达式...,很少去思考,去自己动手实现一个自己需要正则表达式。...这种现象是不对,假如我有一天想要仔细研究某个框架,或者某个npm包实现原理,源码down下来,一堆正则表达式看不懂,岂不是很尴尬 ? 这个问题需要纠正。...但是最近项目用Taro做了H5和小程序多端开发模式,所以想看下Taro源码。 源码里分了很多npm包,用lerna做了包管理。

43720

126邮箱登录html,126邮箱登陆界面

大家好,又见面了,是你们朋友全栈君。 大家常常会使用一些手机软件,怎么登录126邮箱,操作简单,容易理解,下面大家一起来学习一下吧。...is fast and stable, the spam interception rate is more than 99%, the mailbox capacity automatically doubles...126邮箱 打开浏览器 在搜索框内输入126邮箱 输入用户名和密码,点击登陆 登陆后出现页面就和电脑是一样,在该页面下,我们可以查看收信箱。...也可以写信,手机发送邮件也和电脑版操作一样,输入对方邮箱号,写好内容,点击发送。 这是本人原创,如果帮到大家请给我点赞哦。...本站仅提供信息存储空间服务,拥有所有权,承担相关法律责任。如发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

3.2K20

掌握8条泛型规则,打造优雅通用Java代码

Java 泛型章节汇总出8条泛型相关习惯不要使用原生态类型在早期JDK中,从集合中获取对象时都需要强制转换如果在添加对象时,不小心将不同类型对象加入集合,那么获取对象强制转换时会发生报错这种报错并不会在编译期间提示...,在编译期将泛型擦除并完成强制转换在编译期间当发生这种情况时会在编译期间报错,从而尽早发现错误为了对历史版本兼容,也可以不需要指定泛型,这种情况称为原生态泛型原生态泛型只是为了兼容历史版本,它会丢失使用泛型所有优点...:安全(提早报错)、灵活(不需要手动强转)当无法预估集合中对象类型时,可以使用泛型Object或无限制通配符如果使用泛型Object则可以存放任何对象,因为Object是所有类父类但是对象从集合中取出时,只能转换为Object,如果需要转换为其他类型则还是需要强制转换 List...、消费是对集合来说,读取数据时相当于提供给外界,写数据相当于消费外界传入数据泛型和可变参数谨慎同时使用可变参数是一种语法糖,实际上会转换为数组当泛型与可变参数同时使用时,实际上可以理解为泛型数组但是

1811

从头到脚说单测——谈有效单元测试(下篇)

我们设计case,想要得到最全面的设计,根本是考虑全输入全输出组合,当然,一方面,这么做耗时太大,很多时候是不可执行;一方面,这不是想要结果,要考虑投入产出比。...基于实现:输入输出也考虑,中间怎么实现也考虑。mock就是一个好例子,比如我们写一个case,我们会用mock去验证函数内是否调用了哪个外部方法、调用了几次,语句执行顺序是怎样。...“要么写好,要么写”。case也是代码,也需要维护,也有工作量,所以要写到位,而不是写得多。写了一堆没用,你还得维护,不如删了。 2....但是将来是开发来写单测,他自己设计函数肯定知道要覆盖哪些异常分支。 2. 嗯,需要看代码正常流程是怎样,但不代表着把代码扒下来以设计出case。...实践过程中,发现很难执行,因为从入口处就要想好每一次调用都需要返回哪些数据及格式,串起来一个case已经非常不易。

2.5K30

单体微服务测试策略

外部依赖:由于业务上需要,每个微服务可能会去访问其他微服务,在这里,要注意避免网络隔离引起错误(在容器化部署环境下,网络问题更为复杂,需要特别关注),同时还要考虑网络延迟和中断引发业务问题,需要被更优雅处理...但是这里也需要注意一点,并不是所有的单体微服务都需要这么认真的去测试,因为有些微服务功能相对单一,或者是一些业务逻辑不是很复杂服务,可以不需要过多关注。...04 关于单元测试,在整理资料时候,遇到一个词:test doubles,说是什么呢,指的是为了达到测试目的并且减少被测试对象依赖,使用“替身”代替一个真实依赖对象,从而保证了测试速度和稳定性...这不就是我们常说Mock吗?原来还是自己想简单了。 test doubles一般会包含4类:Dummy、Fake、Stub和最常见Mock。举一个简单例子来说明下。...理解敏捷是什么 敏捷研发想表达什么 在职场上拥有选择权力 敏捷测试系列文章合集 END 标星、点赞、关注三连走起,感谢支持。 如果想阅读更多文章,请关注公众号。

29520
领券