程序无法正常运行[关闭]

Posted

技术标签:

【中文标题】程序无法正常运行[关闭]【英文标题】:Program won't run properly [closed] 【发布时间】:2017-02-08 06:29:55 【问题描述】:

所以我编写了这个程序,但由于某种原因,我的 else 语句不起作用。 例如,如果我输入“e”,我的程序将简单地崩溃......当它实际上应该返回“无效输入”时 有人可以帮帮我吗?

================================================ ============================

import java.util.Scanner;

public class AbsValue2 
  public static void main(String[] args) 

  Scanner input = new Scanner(System.in);
  System.out.println("Enter a number:");
  String num = input.nextLine();
  Double num2 = new Double(Double.parseDouble(num));
  Double abs_val = new Double(Math.sqrt(num2 * num2));

  if (num.matches("[+-]?[\\d]+[.]*"))
    System.out.println("The absolute value of " + num + " is |" + abs_val + "|");
  else if (num.matches("[+-]?[\\d]*.[\\d]+"))
    System.out.println("The absolute value of " + num + " is |" + abs_val + "|");
  else
    System.out.println("Invalid input");

  

【问题讨论】:

您正在尝试解析它,然后再检查它是否有效。 简单的解决方法是在 try 和 catch 中进行包装,并在您的 catch 输出中输入无效输入! 【参考方案1】:

问题出在这里:

Double num2 = new Double(Double.parseDouble(num));

如果 num 是“e”,那么你会得到一个NumberFormatException

您可以使用Scanner.hasNextDouble 来检查或尝试/捕获该异常。

【讨论】:

【参考方案2】:

你的代码抛出了NumberFormatException之前 if 语句到达,因为这一行:

Double num2 = new Double(Double.parseDouble(num));

您需要在解析之前检查其有效性

【讨论】:

以上是关于程序无法正常运行[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

解决了, 关闭putty后无法在后台运行,后台程序也退出

解决集群长时间运行后无法正常关闭问题

Hostinger无法运行getimagesize localhost运行正常[关闭]

应用程序关闭后后台进程(AsyncTask)仍在运行

解决集群长时间运行后无法正常关闭问题

解决集群长时间运行后无法正常关闭问题