проблема чисел в коде - PullRequest
       5

проблема чисел в коде

0 голосов
/ 20 декабря 2010

У меня проблемы с кодом. Он прекрасно работает, когда я его компилирую, пока не доберусь до точки, когда числа делятся. Я не получаю числа с десятичной дробью, только ноль. Как видите, я уже изменил последние переменные на удвоенные, но они не дали никакого значимого результата.

Что я должен сделать, чтобы изменить это?

        int[] arr = new int[2];
        System.out.println("enter two numbers: ");
        arr[0] = sc.nextInt();
        arr[1] = sc.nextInt();

        int summa = arr[0]+arr[1];

        System.out.println("What's "+arr[0]+" + "+arr[1]+" ?");
        int vad = sc.nextInt();

        if (summa == vad)
            System.out.println("Correct!");
        else
            System.out.println("Wrong - The right answer is "+summa);


        int summa2 = arr[0]-arr[1];
        System.out.println("What's "+arr[0]+" - "+arr[1]+" ?");
        int vad2 = sc.nextInt();

        if (summa2 == vad2)
            System.out.println("Correct!");
        else
            System.out.println("Wrong - The right answer is: "+summa2);


        int summa3 = arr[0]*arr[1];
        System.out.println("What's "+arr[0]+" * "+arr[1]+" ?");
        int vad3 = sc.nextInt();

        if (summa3 == vad3)
            System.out.println("Correct!");
        else
            System.out.println("Wrong - The right answer is "+summa3);


        double summa4 = arr[0]/arr[1];
        System.out.println("What's "+arr[0]+" / "+arr[1]+" ?");
        double vad4 = sc.nextInt();

        if (summa4 == vad4)
            System.out.println("Correct!");
        else
            System.out.println("Wrong - The right answer is "+summa4);



}

}

Ответы [ 2 ]

4 голосов
/ 20 декабря 2010

1 вы читаете int оно должно быть double .
2 Вам необходимо привести к double код проверки ниже

    double summa4 = ((double)arr[0])/arr[1];
    System.out.println("What's "+arr[0]+" / "+arr[1]+" ?");
    double vad4 = sc.nextDouble();

    if (summa4 == vad4)
        System.out.println("Correct!");
    else
        System.out.println("Wrong - The right answer is "+summa4);
2 голосов
/ 20 декабря 2010

Хотя переменная sum4 имеет тип double, но ее вычисление выполняется в целочисленном делении. Следовательно, результат не будет иметь десятичного знака.

Например, 5/2 = 2, а не 2,5, если 5 и 2 являются целыми числами или значениями, хранящимися в переменной типа int.

изменение:

double summa4 = arr[0]/arr[1]; 

до

double summa4 = 1.0*arr[0]/arr[1];
...