Разные методы для разных типов
1. Считать с консоли данные, пока не введено слово «exit«.
2. Для каждого значения, кроме «exit«, вызвать метод print. Если значение:
2.1. содержит точку ‘.‘, то вызвать метод print для Double;
2.2. больше нуля, но меньше 128, то вызвать метод print для short;
2.3. меньше нуля или больше либо равно 128, то вызвать метод print для Integer;
2.4. иначе, вызвать метод print для String.
Требования:
1. Программа должна считывать данные с клавиатуры.
2. Программа должна прекращать считывать данные с клавиатуры после того как была введена строка "exit".
3. Если введенная строка содержит точку(".") и может быть корректно преобразована в число типа Double - должен быть вызван метод print(Double value).
4. Если введенная строка может быть корректно преобразована в число типа short и полученное число больше 0, но меньше 128 - должен быть вызван метод print(short value).
5. Если введенная строка может быть корректно преобразована в число типа Integer и полученное число меньше или равно 0 или больше или равно 128 - должен быть вызван метод print(Integer value).
6. Во всех остальных случаях должен быть вызван метод print(String value).
Задача долго не получалась, пока я не подсмотрела в комменты и не увидела, что там два раза проверяют на способность корректного преобразования в Integer. Объясните, пожалуйста, почему так нужно делать? Мб вообще все не очень корректно выглядит(((
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader r = new BufferedReader ( new InputStreamReader ( System.in ) );
while (true) {
String text = r.readLine();
try {
if (text.equals("exit")) {
break;
} else if (text.contains(".")) {
Double a = Double.parseDouble(text);
print(a);
} else if (Integer.parseInt(text) > 0 && Integer.parseInt(text) < 128) { // в ТЗ же написано про условие преобразования в short
short a = Short.parseShort (text);
print(a);
} else if (Integer.parseInt(text) <= 0 || Integer.parseInt(text) >= 128) {
print(Integer.parseInt(text));
}
} catch (NumberFormatException e) {
print(text);
}
}
}
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);
}
}
package com.javarush.task.task15.task1519;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
/*
Разные методы для разных типов
*/
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader r = new BufferedReader ( new InputStreamReader ( System.in ) );
while (true) {
String text = r.readLine();
try {
if (text.equals("exit")) {
break;
} else if (text.contains(".")) {
Double a = Double.parseDouble(text);
print(a);
} else if (Integer.parseInt(text) > 0 && Integer.parseInt(text) < 128) {
short a = Short.parseShort (text);
print(a);
} else if (Integer.parseInt(text) <= 0 || Integer.parseInt(text) >= 128) {
print(Integer.parseInt(text));
}
} catch (NumberFormatException e) {
print(text);
}
}
}
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);
}
}