[英]java - issue with double, when user enter letter/signs, the program fails to run
我是一個初學者,我正在嘗試使用雙變量制作一個簡單的計算器程序,以便允許用戶同時添加int
和double
數來進行計算。 但是,只要用戶輸入String
,程序就會失敗。 我已經做了很多嘗試來解決這個簡單的問題。 我希望有一個人可以幫助我。
請輸入第一個數字:因此,當用戶輸入25 / 25.5時,一切正常,但是當用戶輸入字母(例如e / f / k等)時,程序將失敗。 我在“請輸入第一個數字”之后嘗試了以下代碼:
if (user1 == aswin.nextDouble())
{
System.out.println("Continue");
}
else (user1 == Double.parseDouble(str))
{
System.out.println("Invalid Entry - Please enter Only numbers");
}
下面是實際的程序,沒有上面的代碼:
import java.util.Scanner;
import java.text.NumberFormat;
public class NewTwo_Calculator_IF_Statement {
public static void main (String [] args)
{
Scanner aswin = new Scanner (System.in);
double user1 = 0, user2 = 0, mult, div, sub, ad;
char user3;
boolean run = true;
String user;
System.out.println ("Welcome to ASWINS calculator" + '\n');
System.out.print ("Please enter First number - ");
user1 = aswin.nextDouble();
System.out.print("Please Enter Second number - ");
user2 = aswin.nextDouble();
System.out.println ('\n' + "Please choose following options" + '\n');
System.out.println ("Type either A/a/+ for Addition ");
System.out.println ("Type either S/s/- for Substraction");
System.out.println ("Type either D/d or / for Division ");
System.out.println ("Type M/m/* for Multiplication");
user3 = aswin.next().charAt(0);
mult = user1*user2;
ad = user1+user2;
sub = user1-user2;
div = user1/user2;
if (user3 == ('*') || user3 == ('m') || user3 == ('M'))
{
System.out.println('\t' + "Multiplication of " + user1 + " and " +user2 + " is = " + mult + '\n');
} else if (user3 == ('+') || user3 == ('a') || user3 == ('A'))
{
System.out.println ('\t' + "Addition of " + user1 + " and " +user2 + " is = " + ad + '\n');
} else if(user3 == ('-') || user3 == ('s') || user3 == ('S'))
{
System.out.println ('\t' + "Substraction of " + user1 + " and " +user2 + " is = " + sub + '\n');
} else if (user3 == ('/') || user3 == ('d') || user3 == ('D'))
{
System.out.println ('\t' + "Division of " + user1 + " and " +user2 + " is = " + div + '\n');
} else
{
System.out.println('\t' + "Invalid Input");
}
System.out.println ("Please Enter 'e' or type 'exit' to exit the program OR type anything else to stay on the page" + '\n');
user = aswin.next();
if (user.equalsIgnoreCase("e") || (user.equalsIgnoreCase("exit")))
{
System.out.println("Thanks for Entering -> " + user + " <-");
System.out.println ("You QUIT the page, Thanks and Hope you will use my(Aswin's) Calculator again");
System.exit(0);
}
else
{
System.out.println("Thanks for Entering -> " + user + " <-");
System.out.println (" You are STAYING on the page, Thanks " + '\n');
System.out.println ( "Thank you so much for using my calculator");
}
}
}
在官方文檔中 ,提到了.nextDouble()
一個標記(用戶輸入)與浮點數不匹配時(例如,當用戶輸入字母時) .nextDouble()
引發 InputMismatchException
。 您可以使用try catch塊來處理此類異常:
try{
user1 == aswin.nextDouble()
}catch(InputMismatchException e){
// User input is invalid
System.out.println("Invalid Entry - Please enter Only numbers");
}
您可以在此處閱讀有關捕獲和處理異常的更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.