簡體   English   中英

按升序排序三個浮點數

[英]Sort in ascending order three floating point numbers

import java.util.Scanner;

public class Crescente {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        double primo = in.nextDouble();
        double secondo = in.nextDouble();
        double terzo = in.nextDouble();
        if(primo > secondo && primo > terzo) {
            if(secondo > terzo) {
                System.out.println(primo+" "+secondo+" "+terzo);
            }else {
                System.out.println(primo+" "+terzo+" "+secondo);
            }
        }else if(secondo > primo && secondo > terzo) {
            if(primo > terzo) {
                System.out.println(secondo+" "+primo+" "+terzo);
            }else {
                System.out.println(secondo+" "+terzo+" "+primo);
            }
        }else if(terzo > primo && terzo > secondo) {
            if(primo > secondo) {
                System.out.println(terzo+" "+primo+" "+secondo);
            }else {
                System.out.println(terzo+" "+secondo+" "+primo);
            }
        }
        in.close();
    }
}

如果您輸入整數,我的程序可以工作,但是如果您輸入浮點數,它會給我這個錯誤:

Exception in thread "main" java.util.InputMismatchException
    at java.base/java.util.Scanner.throwFor(Scanner.java:939)
    at java.base/java.util.Scanner.next(Scanner.java:1594)
    at java.base/java.util.Scanner.nextDouble(Scanner.java:2564)
    at poo.Crescente.main(Crescente.java:8)

我不知道為什么它會給我這個錯誤,因為我將nextDouble用於所有都是double的變量。 請幫忙。

看起來您的默認語言環境設置為LOCALE.ITALY因為您來自意大利。 改成下面這樣

Scanner in = new Scanner(System.in);
in.useLocale(Locale.ENGLISH);
// rest of the code

通過分別切換Locale.ITALYLocale.ENGLISH我能夠使用逗號分隔的數字 (4,2) 和十進制分隔的數字 (4.2) 運行程序。

從文檔:

 useLocale(Locale locale)

將此掃描器的語言環境設置為指定的語言環境。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM