java不等于正整数怎么输入_关于java:测试输入是否为正整数
本问题已经有最佳答案,请猛点这里访问。
好的,我似乎无法找到解决问题的明确答案。
我需要一个Java程序,该程序可以返回用户输入的值,即正整数。
为了将此与许多其他类似的问题区分开,我需要进行编程以使输入字符串时不会崩溃。该程序将需要重复提示用户输入,直到输入正整数为止。该脚本将是这样的:
Input: 7.2
Error, try again: -5
Error, try again: -2.4
Error, try again: 3.77777
Error, try again: -1
Error, try again: 0
Error, try again: -33
Error, try again: microwave
Error, try again: -1
Error, try again: 4.2
Error, try again: hello
Error, try again: 3.14159
Error, try again: 4
4 is a positive integer.
重要的是,输入类似单词的程序时不要崩溃。我不知道该程序执行这种操作的方法。我可以在扫描器中使用hasNextInt,但是随后我不知道如何检查它是否大于零,因为在另一种情况下输入可能是字符串。
有人可以帮我解决一个返回上述脚本的程序吗?非常感谢。
编辑:好的,我终于在另一个问题中找到了想要的答案。此解决方案不使用parseInt(),也不使用我一直在寻找的try / catch。漂亮又简单。所以这是解决方案代码:
Scanner in = new Scanner(System.in);
int num;
System.out.print("Input:");
do {
while (!in.hasNextInt()) {
System.out.print("Error, not integer. Try again:");
in.next();
}
num = in.nextInt();
if (num<=0){
System.out.print("Error, not positive. Try again:");
}
} while (num <= 0);
System.out.println(num +" is a positive integer.");
读取nextLine,使用try-catch并解析为Integer,捕获异常。 如果没有发生异常,请检查num<0?
@KevinEsche对try-catch不太熟悉,您能详细说明一下如何在代码中使用它吗? 对不起,我不是很聪明:(
尝试这种方式:
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int value = -1;
do {
System.out.print("Input:");
String input = scanner.next();
try {
value = Integer.parseInt(input);
} catch (NumberFormatException e) {
System.out.println("Error, try again:" + input);
}
} while (value < 1);
System.out.println(value +" is a positive integer.");
}
我需要学习更多java :(但谢谢您的工作!
现在它是可执行的,并且接近您的要求。 是的,学习Java!
以下是两种情况:
方案1:
-我假设正整数是指整数1,2,3,4等...
-不会将诸如4.00之类的值视为整数
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int value = 0;
System.out.print("Input:");
while (value < 1){
String input = scanner.next();
try {
value = Integer.parseInt(input);
if(value < 1){
System.out.print("Error, try again:");}
} catch (NumberFormatException e) {
System.out.print("Error, try again:");
}
}
System.out.println(value +" is a positive integer.");
}
}
方案2:
-我假设正整数是指整数1,2,3,4等...
-如4.00之类的值将被视为整数
import java.math.BigDecimal;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Input:");
String value ="";
boolean positiveIntegerNoDecimals = false;
while (positiveIntegerNoDecimals == false) {
value = scanner.next();
positiveIntegerNoDecimals = isPositiveIntegerNoDecimals(value);
if (positiveIntegerNoDecimals == false)
System.out.print("Error, try again:");
}
System.out.println(value +" is a positive integer.");
}
private static boolean isPositiveIntegerNoDecimals(String input) {
try {
int value = -1;
BigDecimal decimal = new BigDecimal(Double.parseDouble(input));
int scale = decimal.scale();
if (scale == 0)
value = decimal.stripTrailingZeros().intValue();
if (value > 0)
return true;
} catch (NumberFormatException e) {}
return false;
}
}
您需要以某种方式验证输入。如果输入的是Integer。那么您需要将其打印到屏幕上,如果输入的是Long,则需要打印错误消息Try again。
在下面的示例中,我创建了一个方法,该方法是C# TryParse方法的派生类。 C#TryParseInt
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
while (true)
{
@SuppressWarnings("resource")
Scanner reader = new Scanner(System.in);
System.out.println("Enter a number:");
String input = reader.next();
tryParseInt(input);
}
}
private static void tryParseInt(String input) {
try {
int val = Integer.parseInt(input);
System.out.println(val +" is a positive Integer");
} catch (NumberFormatException e) {
System.out.println(input +" Is not a number/positive Integer," + e.getMessage());
}
}
}
这样做是将输入解析为Integer,如果由于输入是String或不是有效的正数Integer而失败,则会将其解析为NumberFormatException。然后,我可以打印所需的错误消息。
祝好运!
这是指向Java中异常处理的链接。通常,您只需要将代码放入try块即可。然后,如果在该块中发生预期的异常,您的程序将在catch块中执行代码并继续工作。
该链接非常有用,谢谢!
Integer.parseInt(String s)
就是为此而写的。
不熟悉该方法,您是否可以向我展示其在程序中的使用方式?
告诉我们一些使用扫描仪的代码? 病态指南将指导您在何处以及如何使用它。
java不等于正整数怎么输入_关于java:测试输入是否为正整数相关推荐
- 1002 写出这个数 (20)(20 分) 读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10^10
https://pintia.cn/problem-sets/994805260223102976/problems/994805324509200384 1002 写出这个数 (20)(20 分) ...
- java当中有关循环的代码_有关Java循环的内容,编程中还是比较常用的,下面分享给大家几个循环的示例代码,练习一下。1、循环输出1到100之间所有能被3或能被4整除的数。pack...
有关Java循环的内容,编程中还是比较常用的,下面分享给大家几个循环的示例代码,练习一下. 1.循环输出1到100之间所有能被3或能被4整除的数. package com.hz.loop02; /** ...
- 对java这门课程的认识_关于java课程的总结
前言 本次博客主要内容为此次三次作业的总结,整门java课程学习的总结,以及在此次java课程中的收获,和对课程的意见. 作业过程总结 第一次作业主要考察的是对程序的可扩展性,实现开闭原则非常重要,因 ...
- java两个字符串 相隔天数_关于Java: Joda-Time时间中两个日期之间的天数
我如何找到两个joda time DateTime实例之间的天数差异?如果开始时间是星期一,结束时间是星期二,那么不管开始和结束日期的小时/分钟/秒是多少,返回值都应该是1. 如果从晚上开始到早上结束 ...
- java制作一个简单的画板_【Java】Thymeleaf一个简单示例
Thymeleaf简单介绍 Thymeleaf是用来开发Web和独立环境项目的服务器端的Java模版引擎 Spring官方支持的服务的渲染模板中,并不包含jsp.而是Thymeleaf和Freemar ...
- 用java编写一个故事的程序_使用Java怎么编写一个递归程序
使用Java怎么编写一个递归程序 发布时间:2021-02-20 16:05:44 来源:亿速云 阅读:52 作者:Leah 这篇文章将为大家详细讲解有关使用Java怎么编写一个递归程序,文章内容质量 ...
- java图片的在线预览_【Java】web实现图片在线预览
一.场景还原 用户上传了一张图片,已有服务器保存路径,现由于系统配置无法直接通过图片URL打开预览图片,需实现点击预览将图片显示在浏览器上. 二.实现方法 html: 预览 此处用预览按钮方法实现 J ...
- java登录注册功能怎么实现_使用Java代码实现登录注册功能
实现思路:分别创建5个包和5个类{cn.f.pojo(User.java):cn.f.Dao(UserDao.java):cn.f.Dao.impl(UserDaoImpl.java): cn.f.g ...
- java 必须try catch的异常_【java基础之异常】死了都要try,不淋漓尽致地catch我不痛快!...
@ 1.异常 1.1 异常概念 异常 :简单说就是不正常运行,最终导致JVM的非正常停止. 在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象.Java处 ...
最新文章
- OpenResty搭建高性能服务端
- win7清除系统托盘图标的方法
- JFileChooser多选、选择目录
- cdt规约报文用程序解析_DNS协议(报文解析)
- C#之windows桌面软件第三课:完整的串口调试助手
- flex 换主轴后子元素占满_Flex布局
- thinkpaidE480office安装文件夹
- camunda流程定义表无数据_创建流程实例时 act_ru_identitylink 表中没有出现相关的人员数据...
- android的交互方式,Android与js的交互方式
- 多线程执行sql报错处理
- 前端H5面试题Js:JavaScript字符串的常用方法有哪些?
- 一行代码统计文本中指定字符串出现的次数
- TP5学习(七):模型
- 计算机位置不可用d 桌面,win7系统D: 文档desktop引用了一个不可用的位置怎么办...
- 本科毕设-基于C8051单片机的身份识别系统设计
- XLSReadWriteII 读取EXCEL数据 动态响应字段的列编号
- P4417 [COCI2006-2007#2] STOL
- uniapp中的分享功能实现(APP,小程序,公众号)
- JAVA TOOL-【1】配置
- kill和killall的区别
热门文章
- PHP文件系统-文件上传类
- swift5.x基础知识入门
- 15-description-Objective-C笔记
- java中servletcontext_java中获取ServletContext常见方法
- windows无法启动mysql服务(位于本地计算机上)_Windows 10开始菜单无反应,怎么办,看是否启用User Manager服务...
- SOL注入——HTTP头部注入(2)(七)
- 深信服上网管理设备恢复出厂设置方法
- mysql 用户名中主机$_phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连接。您应当检查配置文件中的主机、用户名和密码,...
- ios kb转m_iOS 音频录音和格式转换
- sendkeys鼠标点击_selenium操作详解之鼠标键盘事件