【发布时间】:2020-03-20 08:35:10
【问题描述】:
我正在尝试创建一个程序来计算以下形式的用户输入:分数、混合分数和小数。我对分数输入没有任何问题,我有的是混合分数和小数。
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。
【问题讨论】:
-
您应该将整行作为字符串读取,然后再进行处理。您可以简单地遍历所有字符并根据它决定输入的内容。
-
在 C 中也是一样的......
标签: java java.util.scanner delimiter