#java
#java
Вопрос:
Я не могу понять, что не так в строке 34, и мне нужна помощь в ее исправлении. Я не знаю, неправильно ли я что-то ввел или мне нужно что-то преобразовать.
import java.util.Scanner;
import java.lang.Math;
public class PaintEstimator {
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
double wallHeight;
double wallWidth;
double wallArea;
System.out.println("Enter wall height (feet): ");
wallHeight = scnr.nextDouble();
System.out.println(wallHeight);
wallWidth = scnr.nextDouble();
System.out.println("Enter wall width (feet): ");
System.out.println(wallWidth);
wallArea = wallHeight * wallWidth;
System.out.println("Wall area: " (wallArea) " square feet");
double paintNeeded;
int cansNeeded;
final double squareFeetPerGallons;
final double gallonsPerCan;
squareFeetPerGallons = 350.0;
gallonsPerCan = 1.0;
System.out.print("Paint needed: ");
paintNeeded = wallArea / squareFeetPerGallons;
System.out.print(paintNeeded);
System.out.println(" gallons");
cansNeeded = paintNeeded / gallonsPerCan;
System.out.print("Cans needed: ");
System.out.print(cansNeeded);
System.out.println(" can(s)");
}
}
Комментарии:
1. Что за строка 34?
2. Проблемная строка
cansNeeded = paintNeeded / gallonsPerCan;
. Вы делите два double, но присваиваете результат int. Вы должны преобразовать результат этого деления в int, возможно, после некоторой операции округления.
Ответ №1:
Целые числа не имеют десятичных точек, в отличие от двойных, которые имеют.
Вы можете присвоить целое число только int, а не double и т.д.,.
В вашем случае вы, вероятно, захотите определить cansNeeded как double (каждая другая переменная является double). Это должно выглядеть примерно так:
double cansNeeded = paintNeeded / gallonsPerCan
Затем вы можете соответствующим образом обработать результат (округлить вверх, уменьшить и т.д.). Это более точно.
Для округления используйте Math.ceil(cansNeeded)
. Для округления в меньшую сторону используйте Math.floor(cansNeeded)
.
Ответ №2:
Результатом деления doubles является double, который не может быть присвоен int. В вашем случае вы, вероятно, захотите использовать Math.ceil
, а затем привести к int
.
cansNeeded = (int) Math.ceil(paintNeeded / gallonsPerCan);