Я пытаюсь создать программу, которая будет вычислять пользовательский ввод в виде: дроби, смешанные дроби и десятичные дроби. У меня нет проблем с вводом дробей, у меня есть смешанные дроби и десятичные дроби.
import java.util.Scanner;
public class Fraction {
public static int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//ignore all non-numerical input
//how to detect if that non-numerical input is '/' or '.', or ' ' (blank space)?
scan.useDelimiter("\\D");
int num, den;
num = scan.nextInt();
den = scan.nextInt();
int GCD = gcd(num, den);
num = num / GCD;
den = den / GCD;
if (den == 0) {
System.out.println("Invalid denominator, cannot divide by 0");
} else {
System.out.println("Fraction: "+num+"/"+den);
if (num > den) {
System.out.println("Mixed Fraction: "+(num / den)+" "+(num % den)+"/"+den);
} else {
System.out.println("Mixed Fraction: N/A");
}
System.out.println("Decimal: "+((double) num / (double) den));
}
scan.close();
}
}
Сейчас я могу вводить только дробные, а не смешанные дробные или десятичные. Вот пример правильного вывода из ввода дроби:
Input:
46/22
Output:
Fraction: 23/11
Mixed Fraction: 2 1/11
Decimal: 2.090909090909091
Мне нужно создать такой, где программа может автоматически определять, является ли нецифровый ввод '/', '' (пробел) , или '.' дифференцировать дроби, смешанные дроби и десятичные дроби. Есть ли способ, которым я мог бы это сделать?
Примечание: я довольно плохо знаком с Java, и единственный другой язык, который я выучил, это C.