package com.javarush.task.task15.task1519;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/*
Разные методы для разных типов
*/
public class Solution {
public static void main(String[] args) throws IOException, NumberFormatException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String number;
while (true) {
number = reader.readLine();
//int num = Integer.parseInt(number);
if ("exit".equals(number)) {
break;
} else if (".".equals(number)) {
double d1 = Double.parseDouble(number);
Double d = d1;
print(d);
if (d > 0 && d < 128) {
short s = Short.parseShort(String.valueOf(d));
print(s);
} else if (d == 0 && d > 128) {
Integer i = Integer.parseInt(String.valueOf(d));
print(i);
} else print(number);
} else if (Integer.parseInt(number) == 0 && Integer.parseInt(number) > 128) {
print(number);
} else if (Integer.parseInt(number) > 0 && Integer.parseInt(number) < 128) {
short s = Short.parseShort(number);
print(s);
} else print(number);
}
}
public static void print(Double value) {
System.out.println("Это тип Double, значение " + value);
}
public static void print(String value) {
System.out.println("Это тип String, значение " + value);
}
public static void print(short value) {
System.out.println("Это тип short, значение " + value);
}
public static void print(Integer value) {
System.out.println("Это тип Integer, значение " + value);
}
}
Привет. не понимаю почему программа при вводе числа с точкой (Double), перепрыгивает условие Double (строка 21) на строку 32 к Integer, и выдает исключение NumberFormatException. Почему пропускает условие, если оно верно? точка там есть. если вводить целые числа, все работает.Rodden Tod
26 уровень
не понимаю
Решен
Комментарии (1)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
hidden #2322530
29 августа 2020, 14:46
потому что неправильное условие.
что значит equals ? полностью совпадает. тебе надо так:
number.contains(“.”)
дословно переменная number содержит в себе символ точку
на будущее . проверяемое значение должно быть первым. number.equals() или number.contains()
0