У меня есть следующий код:неконвертируемые типы ошибок в Java
import javax.swing.JOptionPane;
public class Excercise613 {
/**
* Display the prompt to the user; wait for the user to enter
* a whole number; return it.
*/
public static int askInt(String prompt) {
String s = JOptionPane.showInputDialog(prompt);
Double d = Double.parseDouble(s);
return d >= 0 ? (int) d : (int) (d - 1);
} // End of method
} // End of class
Когда я компилирую это, я получаю сообщение об ошибке в нижней части экрана, который говорит «неконвертируемые типам необходимые:. Int Найдено: Java .lang.Double "И затем он выделяет фрагмент кода (int) d".
Что я здесь делаю неправильно? Почему не работает литье типа?
Это сработало; код теперь компилируется. Но зачем мне это добавлять? Я написал код раньше, когда просто иметь переменную было достаточно, чтобы ее отличить. @DermotBlair –
Двойной с капиталом «D» является примитивом в штучной упаковке и не может быть отнесен к примитивному int, используя '(int)', но примитивный двойной с небольшим «d» можно передать в int. Поэтому, чтобы использовать Double для int, вам нужно получить его двойное значение, используя функцию doubleValue(). –
Если это сработало для вас, и вы довольны моим объяснением, не могли бы вы принять ответ, нажав кнопку. Благодарю. Если у вас есть еще вопросы по этому поводу, просто дайте мне знать. –