JAVA最小公约数 最大公倍数 判断字母错误

来源:百度知道 编辑:UC知道 时间:2024/07/08 20:28:42
import java.util.Scanner;

class Num
{
public static void main(String args[])
{int m,n;
Scanner s=new Scanner(System.in);
System.out.println("请输入你想要算的2个数字 : ");
m=s.nextInt();
n=s.nextInt();
if(m<=0||n<=0)
System.out.println("你输入的数不合法,将会出现错误!");
int total, r;
total=m*n;
do
{
if(m<n)
{
int t=m;
m=n;
n=t;
}

r=m%n;
m=n;
n=r;
}while(r!=0);
System.out.println("最大公约数是:"+m);
System.out.println("最小公倍数是:"+total/m);
}
}
在数学 计算上没有问题了 现在就是 输入的两个数 如果时字母或是符号 的错误处理机制 弄不好 hasNextInt() 有2个变量 判断比较复杂 而且我放进去老有错 请高手指点

使用Integer.parseInt()去转换一下 如果不能转换就说明有问题了
下面是代码自己看看吧
import java.util.Scanner;

class Num {
public static void main(String args[]) {
int m = 0;
int n = 0;
Scanner s = new Scanner(System.in);
System.out.println("请输入你想要算的2个数字 : ");
try {
m = Integer.parseInt(String.valueOf(s.nextInt()));
n = Integer.parseInt(String.valueOf(s.nextInt()));
if (m <= 0 || n <= 0)
System.out.println("你输入的数不合法,将会出现错误!");
int total, r;
total = m * n;
do {
if (m < n) {
int t = m;
m = n;
n = t;
}

r = m % n;
m = n;
n = r;
} while (r != 0);
System.out.println("最大公约数是:" + m);
System.out.println("最小公倍数是:" + total / m);
} catch (Exception e) {
//e.printStackTrace();
System.out.println("您输入了非法字符,请输入数字!!");
}