黑马程序员技术交流社区
标题:
java算法题。小菜鸟的大问题
[打印本页]
作者:
孤影卓尔
时间:
2014-2-24 15:57
标题:
java算法题。小菜鸟的大问题
java接收键盘输入,类似于“5/6”这种样式的分数,然后判断是否是最简真分数。是则输出“5/6是最简真分数”;不是则输出“5/6不是最简真分数”然后继续接收键盘输入,直到输入“-1”跳出运行。最简真分数就是分子小于分母,不能再约分。问该怎么实现??
作者:
丶小天
时间:
2014-2-24 15:58
复制代码
作者:
e.c
时间:
2014-2-24 16:04
本帖最后由 e.c 于 2014-2-24 16:06 编辑
求两个数是否有公约数。
作者:
丶小天
时间:
2014-2-24 16:06
上面那个回帖点错了,现敲的代码,如下:
import java.util.regex.Pattern;
import java.io.*;
public class Demo {
public static void main (String args[]) throws IOException {
Pattern regex = Pattern.compile("[0-9]*/[0-9]*");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String num = "";
while (!(num = br.readLine()).equals("-1")) {
if (!regex.matcher(num).matches()) {
System.out.println("格式不正确,请重新输入!");
continue;
}
int a = Integer.parseInt(num.substring(0, num.indexOf('/')));
int b = Integer.parseInt(num.substring(num.indexOf('/')+1));
if (a >= b || !isRelativelyPrime(a, b))
System.out.println(num + "不是最简真分数");
else
System.out.println(num + "是最简真分数");
}
}
private static boolean isRelativelyPrime (int a, int b) {
int tmp = 0;
while (a > 0) {
tmp = b % a;
b = a;
a = tmp;
}
if (b == 1)
return true;
else
return false;
}
}
复制代码
作者:
syw02014
时间:
2014-2-24 16:13
本帖最后由 syw02014 于 2014-2-24 16:15 编辑
核心代码写给你:
public static int Is_ZDGYSHU(int a,int b)
{
int s=0;
for(;a>0;)
{
s=b%a;
b=a;
a=s;
}
if (b==1)
return 1
else
return 0;
}
作者:
e.c
时间:
2014-2-24 16:16
e.c 发表于 2014-2-24 16:04
求两个数是否有公约数。
private static boolean haveCommonDivisor(int i1, int i2) {
int end = i1 > i2 ? i2 : i1;
for (int i = 2; i <= end; i++) {
if (i1 % i == 0 && i2 % i == 0)
return false;
}
return true;
}
作者:
flying
时间:
2014-2-24 16:57
本帖最后由 flying 于 2014-2-24 17:10 编辑
public class Test
{
public static void main(String[] args) throws Exception {
fun();
}
private static void fun() throws Exception{
BufferedReader bufr =
new BufferedReader(new InputStreamReader(System.in));
String line=null;
while(!(line=bufr.readLine()).equals("-1")){
String []str =line.split("/");
//判断是不是真分数
if(check(str))
System.out.println(line+"是简真分数");
else
System.out.println(line+"不是最简真分数");
}
}
private static boolean check(String[] str) {
int x =Integer.parseInt(str[0]);
int y =Integer.parseInt(str[1]);
if(x>=y)
return false;
else{
for(int i=2;i<=x;i++)
if(x%i==0&&y%i==0)
return false;
return true;
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2