Ниже приведен код, когда я делю 5/6, он показывает 0,0 выход, а не 0,8333.
package sunday;
import java.util.Scanner;
public class exception {
public static void main(String[] args) {
int donut,milk;
double donutperglass;
Scanner in=new Scanner(System.in);
try{
System.out.println("enter donut");
donut=in.nextInt();
System.out.println("enter milk");
milk=in.nextInt();
if(milk<1)
throw new Exception("no milk");
donutperglass=donut/milk;
System.out.println(donutperglass);
}catch(Exception e){
System.out.println(e.getMessage());
System.out.println("go buy some milk");
}
System.out.println("end");
// TODO Auto-generated method stub
}
}
Измените типы данных о donut
и milk
вдвое.
Так что он вернет двойное значение вместо int.
См. Этот вопрос для получения более подробной информации.
Объявите donut
и milk
как двойной тип, если вы хотите двойного типа dounutperglass
после разделения.
Тип данных должен быть изменен на двойной.
Причина: int не может удерживать значения с плавающей запятой.
int/int дает int only. Измените типы данных о донете и молоке вдвое.
double/double дает вам точный результат
Вы должны передать одно из условий в значение с плавающей запятой, а не int.
Например:
donutperglass=((double) donut)/milk;