-1

だから基本的に私は2つのことを試しました。それらのコードを提供します:

double number;
Scanner input = new Scanner(System.in);
System.out.println("Name a number!");
number = input.nextDouble();
number = Math.floor(number);
System.out.println(number);

そしてこれ:

double number;
Scanner input = new Scanner(System.in);
System.out.println("Name a number!");
number = Math.floor(input.nextDouble());
System.out.println(number);

しかし、どちらも機能していないようです...誰か助けてもらえますか? 私は基本的にユーザーの入力を切り上げたいと思っています。double を整数に変換することは可能ですか? 例: コンソールが「フライドポテトはいくつ欲しいですか?」と尋ねると、ユーザーは面白いことに 4.5 と答えます。これは私にエラーを与えるでしょう。コンソールが自動的に 4.5 を 4 に変換するようにします。

編集:これが役立つかどうかはわかりません...しかし、クラスは1つしかなく、完全なクラスは次のようになります:

package package.name;

import java.util.Scanner;
public class TestingJava
{
    public static void main(String[] args){
        double number;
        Scanner input = new Scanner(System.in);
        System.out.println("Name a number!");
        number = input.nextDouble();
        number = Math.floor(number);
        System.out.println(number);
    }
}

これは、3.6 のような数値を入力するたびに表示されるエラーです。

Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Unknown Source)
    at java.util.Scanner.next(Unknown Source)
    at java.util.Scanner.nextDouble(Unknown Source)
    at package.name.TestingJava.main(TestingJava.java:10)

数字「2」を与えると「2.0」と返されますが、分数を作るとうまくいきません。

4

3 に答える 3

0

分数の例を教えてください。

たとえば、1.3 を ender すると、予想どおり 1.0 の出力が得られます。しかし、1/3 のようなものを入力すると、あなたが見ているエラーが表示されます。

于 2013-02-13T20:20:00.633 に答える
0

整数値 4 の代わりに 4.0 の double 値を与えることを除いて、どちらの試みもそのまま機能するはずです。

int integralNumber = (int)number;

編集:例外が発生しているようです。記述されたコードは機能するため、入る値System.inは期待したものであってはなりません。入力がどのように見えるかを調べるために、次のことを試すことができます。

package package.name;

import java.util.Scanner;
public class TestingJava
{
  public static void main(String[] args){
    double number;
    Scanner input = new Scanner(System.in);
    System.out.println("Name a number!");
    if(input.hasNextDouble()){
      number = input.nextDouble();
      number = Math.floor(number);
      System.out.println(number);
    } else {
      System.out.println("Expected a double but received " + input.next());
    }
  }
}

もう 1 つの可能性は、ロケールが正しくないことです。スキャナは、小数点とは何かについて混乱している可能性があります。英語がデフォルトのロケールでない場合は、スキャナを初期化した後にこれを試すことができます:

input.useLocale(Locale.ENGLISH);
于 2013-02-13T19:38:24.753 に答える
0

Javaでは、私はそれだと思った

Math.Ceil(number);
int num = (int)number;

切り上げと下限の切り捨て? したがって、最初に切り上げてから、(int) を使用して整数に変換します。

于 2013-02-13T19:49:33.573 に答える