Я бы рекомендовал использовать Regex Matcher для сортировки входных регистров.
целое число может быть обнаружено как -?\d+
с плавающей точкой, как в ваши примеры как -?\d+(\.\d+)?f
удваивается как -?\d+\.\d+
пробел как \s
один или несколько пробелов \s+
может исследовать Java Регулярное выражение в целом может помочь.
Далее вы должны понять, что такое перегрузка метода.
После некоторого повторного исследования вы обнаружите, что в принципе вы можете создайте несколько методов с одним и тем же именем, но с другими типами входных аргументов.
Если вы полностью не разбираетесь в верхних темах (плюс, как работает сканер) в целом, вы можете начать реализацию.
Для В случае, если вы сделали все это и все еще застряли, может, после реализации вопрос поможет вам. Но как всегда: используйте только тот код, который вы полностью понимаете, иначе он нанесет ответный удар.
import java.util.Scanner;
public class ScannerWithDifferentInputs {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNextLine()) {
String input = sc.nextLine();
if (input.matches("-?\\d+\\s+\\d+\\s+\\d+(\\.\\d+)?f")) {
input.replace("f", "");
String[] parts = input.split("\\s+");
interestRate(Integer.parseInt(parts[0]), Integer.parseInt(parts[1]), Float.parseFloat(parts[2]));
} else if (input.matches("-?\\d+(\\.\\d+)?f\\s+\\d+\\s+\\d+(\\.\\d+)?f")) {
input.replace("f", "");
String[] parts = input.split("\\s+");
interestRate(Float.parseFloat(parts[0]), Integer.parseInt(parts[1]), Float.parseFloat(parts[2]));
} else if (input.matches("-?\\d+\\s+\\d+\\s+\\d+\\.\\d+")) {
String[] parts = input.split("\\s+");
interestRate(Integer.parseInt(parts[0]), Integer.parseInt(parts[1]), Double.parseDouble(parts[2]));
} else if (input.equals("q")) {
System.out.println("exit");
break;
} else {
System.out.println("Invalid Input");
}
}
}
static void interestRate(int i1, int i2, float f) {
System.out.println("case int, int, float");
System.out.println(i1 + " " + i2 + " " + f);
}
static void interestRate(float f1, int i, float f2) {
System.out.println("case float, int, float");
System.out.println(f1 + " " + i + " " + f2);
}
static void interestRate(int i1, int i2, double d) {
System.out.println("case int, int, double");
System.out.println(i1 + " " + i2 + " " + d);
}
}