java 板


LINE

我有一个程式,可以把分数化为最简分数, 方法是在建立物件的时候利用建构元化为最简。 我用 JCreator 进行程式码撰写, 在编译的时候显示成功, 但是在执行的时候却出现以下错误: java.lang.NoSuchMethodError : main Exception in thread "main" 我其中有一行程式码如下: public static void main(String args[]) throws IOException 如果我先将最後面的 n 删除,然後再打上一次 n, 很奇怪的,错误就不见,又可以正确执行了, 不晓得到底是哪里有错呢...? 我的完整程式码如下,烦请各位帮忙 import java.io.*; /* 载入 java.io 类别库内的所有类别 */ class Fraction /* 自定义的类别 Fraction */ { private int numerator; /* 将资料设为 private */ private int denominator; /* 将资料设为 private */ public Fraction() /* 定义没有引数的 constructor */ { numerator=0; denominator=1; System.out.println("分数= "+numerator+"/"+denominator); } public Fraction(int n,int d) /* 定义有两个引数的 constructor */ { if(d>n) /* 分母大於分子 */ { int i,j=0,k; int cd_1[]=new int[50]; int gcd_1=1; int n_1=n,d_1=d; for(i=2;i<=n;i=i) /* 当回圈执行完毕以後, */ { /* cd_1 阵列里面的所有元素相乘即是最大公因数 */ if((d%i==0)&&(n%i==0)) { cd_1[j]=i; j++; d=d/i; n=n/i; } else i++; } for(k=0;k<j;k++) /* 回圈执行完毕以後,gcd_1 即是两数的最大公因数 */ { gcd_1*=cd_1[k]; } /* 将传入的两个引数(分子与分母)除以最大公因数, 所得到的数设定给 numerator 跟 denominator , 如此就可以得到最简分数 */ numerator=n_1/gcd_1; denominator=d_1/gcd_1; } else if(d==n) /* 分子等於分母 */ { numerator=n/n; denominator=d/d; } else if(n>d) /* 分子大於分母 */ { /* 与上面分母大於分子的演算法相同 */ int i,j=0,k; int cd_2[]=new int[50]; int gcd_2=1; int n_2=n,d_2=d; for(i=2;i<=n;i=i) { if((d%i==0)&&(n%i==0)) { cd_2[j]=i; j++; d=d/i; n=n/i; } else i++; } for(k=0;k<j;k++) { gcd_2*=cd_2[k]; } numerator=n_2/gcd_2; denominator=d_2/gcd_2; } System.out.println(numerator+"/"+denominator); } public int num() /* 可传回分子 */ { return numerator; } public int den() /* 可传回分母 */ { return denominator; } } public class Fract { public static void main(String args[]) throws IOException { BufferedReader buf; String str1,str2,str3,str4; int num1,num2,num3,num4; buf=new BufferedReader(new InputStreamReader(System.in)); /* 让使用者分别输入两个分数的分子与分母 */ System.out.print("请输入第一个分数的分子: "); str1=buf.readLine(); num1=Integer.parseInt(str1); System.out.print("请输入第一个分数的分母: "); str2=buf.readLine(); num2=Integer.parseInt(str2); System.out.println(); System.out.print("化为最简後,第一个分数= "); Fraction obj1=new Fraction(num1,num2); /* 建立 obj1 物件, 利用 constructor 输出最简分数 */ System.out.println(); System.out.print("请输入第二个分数的分子: "); str3=buf.readLine(); num3=Integer.parseInt(str3); System.out.print("请输入第二个分数的分母: "); str4=buf.readLine(); num4=Integer.parseInt(str4); System.out.println(); System.out.print("化为最简後,第二个分数= "); Fraction obj2=new Fraction(num3,num4); /* 建立 obj2 物件, 利用 constructor 输出最简分数 */ System.out.println(); System.out.println(); System.out.println("---------------(a)---------------"); System.out.print("两者相加以後,分数= "); /* 建立 add 物件,并且把通分以後的分子与分母当作引数传入 */ Fraction add=new Fraction(num1*num4+num2*num3,num2*num4); System.out.println(); System.out.println(); System.out.println("---------------(b)---------------"); System.out.print("两者相乘以後,分数= "); /* 建立 multiply 物件,并且把相乘以後的分子与分母当作引数传入 */ Fraction multiply=new Fraction(num1*num3,num2*num4); System.out.println(); System.out.println(); System.out.println("---------------(c)---------------"); System.out.print("(a)= "+add.num()+"/"+add.den()); System.out.println(", (b)= "+multiply.num()+"/"+multiply.den()); System.out.println(); System.out.println(); System.out.println("---------------(d)---------------"); System.out.println("Floating-point format:"); /* 利用 (float) 将分子转为 float 型态, 计算 float型态除以int型态时,编译器会将int型态转为float型态 因此只要将分子转成float型态,就可以将整个运算的结果转成float型态 */ System.out.printf("(a)= %f, (b)= %f \n\n",(float)add.num()/add.den(),(float)multiply.num()/multiply.den()); } } --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.120.222.46 ※ 编辑: thnestar 来自: 140.120.222.46 (03/28 18:47)
1F:→ slalala: NoSuchMethodError 她告诉你程式找不到你定意的方法 03/28 19:39
2F:推 Sany:会不会是编码的问题,总之你决定了吧@@ 03/28 19:48
3F:推 PsMonkey:我觉得是 JCreator 的问题 03/28 19:48
4F:→ rofellosx:根据我老师经验不建议main丢出Exception... 03/28 20:52
5F:→ thnestar:因为我用dos去开档案的话不会有这样的错误, 03/28 21:36
6F:→ thnestar:所以是JCreator的关系吗?我改成Scanner也是一样错误... 03/28 22:06
7F:→ choufeng:检查程式码是否有地方不小心使用到全形空格 03/31 21:37







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP