本问题已经有最佳答案,请猛点这里访问。

好的,我似乎无法找到解决问题的明确答案。

我需要一个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:测试输入是否为正整数相关推荐

  1. 1002 写出这个数 (20)(20 分) 读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10^10

    https://pintia.cn/problem-sets/994805260223102976/problems/994805324509200384 1002 写出这个数 (20)(20 分) ...

  2. java当中有关循环的代码_有关Java循环的内容,编程中还是比较常用的,下面分享给大家几个循环的示例代码,练习一下。1、循环输出1到100之间所有能被3或能被4整除的数。pack...

    有关Java循环的内容,编程中还是比较常用的,下面分享给大家几个循环的示例代码,练习一下. 1.循环输出1到100之间所有能被3或能被4整除的数. package com.hz.loop02; /** ...

  3. 对java这门课程的认识_关于java课程的总结

    前言 本次博客主要内容为此次三次作业的总结,整门java课程学习的总结,以及在此次java课程中的收获,和对课程的意见. 作业过程总结 第一次作业主要考察的是对程序的可扩展性,实现开闭原则非常重要,因 ...

  4. java两个字符串 相隔天数_关于Java: Joda-Time时间中两个日期之间的天数

    我如何找到两个joda time DateTime实例之间的天数差异?如果开始时间是星期一,结束时间是星期二,那么不管开始和结束日期的小时/分钟/秒是多少,返回值都应该是1. 如果从晚上开始到早上结束 ...

  5. java制作一个简单的画板_【Java】Thymeleaf一个简单示例

    Thymeleaf简单介绍 Thymeleaf是用来开发Web和独立环境项目的服务器端的Java模版引擎 Spring官方支持的服务的渲染模板中,并不包含jsp.而是Thymeleaf和Freemar ...

  6. 用java编写一个故事的程序_使用Java怎么编写一个递归程序

    使用Java怎么编写一个递归程序 发布时间:2021-02-20 16:05:44 来源:亿速云 阅读:52 作者:Leah 这篇文章将为大家详细讲解有关使用Java怎么编写一个递归程序,文章内容质量 ...

  7. java图片的在线预览_【Java】web实现图片在线预览

    一.场景还原 用户上传了一张图片,已有服务器保存路径,现由于系统配置无法直接通过图片URL打开预览图片,需实现点击预览将图片显示在浏览器上. 二.实现方法 html: 预览 此处用预览按钮方法实现 J ...

  8. java登录注册功能怎么实现_使用Java代码实现登录注册功能

    实现思路:分别创建5个包和5个类{cn.f.pojo(User.java):cn.f.Dao(UserDao.java):cn.f.Dao.impl(UserDaoImpl.java): cn.f.g ...

  9. java 必须try catch的异常_【java基础之异常】死了都要try,不淋漓尽致地catch我不痛快!...

    @ 1.异常 1.1 异常概念 异常 :简单说就是不正常运行,最终导致JVM的非正常停止. 在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象.Java处 ...

最新文章

  1. OpenResty搭建高性能服务端
  2. win7清除系统托盘图标的方法
  3. JFileChooser多选、选择目录
  4. cdt规约报文用程序解析_DNS协议(报文解析)
  5. C#之windows桌面软件第三课:完整的串口调试助手
  6. flex 换主轴后子元素占满_Flex布局
  7. thinkpaidE480office安装文件夹
  8. camunda流程定义表无数据_创建流程实例时 act_ru_identitylink 表中没有出现相关的人员数据...
  9. android的交互方式,Android与js的交互方式
  10. 多线程执行sql报错处理
  11. 前端H5面试题Js:JavaScript字符串的常用方法有哪些?
  12. 一行代码统计文本中指定字符串出现的次数
  13. TP5学习(七):模型
  14. 计算机位置不可用d 桌面,win7系统D: 文档desktop引用了一个不可用的位置怎么办...
  15. 本科毕设-基于C8051单片机的身份识别系统设计
  16. XLSReadWriteII 读取EXCEL数据 动态响应字段的列编号
  17. P4417 [COCI2006-2007#2] STOL
  18. uniapp中的分享功能实现(APP,小程序,公众号)
  19. JAVA TOOL-【1】配置
  20. kill和killall的区别

热门文章

  1. PHP文件系统-文件上传类
  2. swift5.x基础知识入门
  3. 15-description-Objective-C笔记
  4. java中servletcontext_java中获取ServletContext常见方法
  5. windows无法启动mysql服务(位于本地计算机上)_Windows 10开始菜单无反应,怎么办,看是否启用User Manager服务...
  6. SOL注入——HTTP头部注入(2)(七)
  7. 深信服上网管理设备恢复出厂设置方法
  8. mysql 用户名中主机$_phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连接。您应当检查配置文件中的主机、用户名和密码,...
  9. ios kb转m_iOS 音频录音和格式转换
  10. sendkeys鼠标点击_selenium操作详解之鼠标键盘事件