Java开发网 |
注册 |
登录 |
帮助 |
搜索 |
排行榜 |
发帖统计
|
您没有登录 |
» Java开发网 » Java SE 综合讨论区
» Java与OOP初步
打印话题 寄给朋友 订阅主题 |
作者 | 求助 一个编译出错的原因!(不兼容的类型) |
zmj888
发贴: 22 积分: 0 |
于 2005-12-04 12:36
请尽量使用准确的文字描述作为标题 (甚至只是简单的错误信息) 若新帖再無恰当标题,可能会被刪除 原來的标题: 求助一个编译出错的原因!! 大家帮忙看看编译出现这样的情况时什么原因?不胜感激
why edited on 2005-12-04 16:58
学java的朋友,请一起来投票让sun推出中文jdk文档!!! |
作者 | Re:求助 一个编译出错的原因!(不兼容的类型) [Re:zmj888] |
why
問題兒童 总版主 发贴: 4629 积分: 388 |
于 2005-12-04 17:03
Show us your Rational class. From the error message, it doesn't have the methods you're trying to call: Rational add(Rational r); ... Rational divide(Rational r); but only void add(Rational r); ... void divide(Rational r); 关于 异常 。。。。 谢谢指教 |
作者 | Rational.java [Re:zmj888] |
zmj888
发贴: 22 积分: 0 |
于 2005-12-04 18:29
//这是我根据RatinalDemo.java设计编写的Rational类 public class Rational{ private int numerator;//两有理数的分子以及相加后的分子 private int denominator;//两有理数的分母以及相加后的分母 public void add(Rational m){ numerator=(numerator*m.getDenominator())+(denominator*m.getNumerator());//得到新的分子 denominator=denominator*m.getDenominator();//得到新的分母 } public void subtract(Rational m){ numerator=(numerator*m.getDenominator())-(denominator*m.getNumerator()); denominator=denominator*m.getDenominator(); } public void multiply(Rational m){ numerator=numerator*m.getNumerator(); denominator=denominator*m.getDenominator(); } public void divide(Rational m){ numerator=numerator*m.getDenominator(); denominator=denominator*m.getNumerator(); } public void setNumerator(int z){ numerator=z; } public void setDenominator(int z){ denominator=z; } public int getNumerator(){ return numerator; } public int getDenominator(){ return denominator; } public String toString(){ String s="numerator+\\+denominator"; return s; } } 学java的朋友,请一起来投票让sun推出中文jdk文档!!! |
作者 | 这是书上提示要求和RationalDemo.java [Re:zmj888] |
zmj888
发贴: 22 积分: 0 |
于 2005-12-04 18:31
书上原文如下:这个案例学习的目的是设计并实现Rational类,代表对有理数的操作。一个有理数是两个整数的比值,通常以a/b的格式表示。称a为分子(numerator),b为分母(denominator)。分母不为零。基本操作有如下定义: 加法:(a/b)+(c/d)=(ad+bc)/bd; 减法:(a/b)-(c/d)=(ad+bc)/bd; 乘法:(a/b)*(c/d)=ac/bd; 除法:(a/b)/(c/d)=ad/bc; 分析和设计: 为了表示有理,需要表示它的分子和分母。这一必要性意味着一个表示有理数的类需要至少两个实例变量:一个变量代表该对象特定的分子,另一个变量代表该对象特定的分母。 private int numerator 相关有理数的分子 private int denominator 相关有理数的分母 有理数的抽象应该至少用如下方式提供方法初始化和操作有理数对象: 默认地构造一个有理数或者有一个分子和分母指定。 计算两个有理数进行加减乘除的结果 。 产生一个能够显示到标准输出流的字符窜代表有理数。 为了支持客户活动和信息隐藏,应该也有方法实现如下活动: 访问分子或分母的值 设置分子或分母的值 为了扶助读者设计必要的信息结构和算法,提供Rational的客户程序RationalDemo.java。程序输出结果如下(没有图只好大概写一下) Enter numerator of a rational number: 1 Enter denominator of a rational number:2 Enter numerator of a rational number: 1 Enter denominator of a rational number:3 For r=1/2 and s=1/3 r+s=5/6 r-s=1/6 r*s=1/6 r/s=3/2 以下是书中提供的RationalDemo.java代码 import java.io.*; public class RationalDemo { public static void main(String args[]) throws IOException { BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in)); System.out.println(); //获得有理数r和s的值 Rational r=new Rational(); System.out.print("Enter numerator of a rational number: "); int a=Integer.parseInt(stdin.readLine()); System.out.print("Enter denominator of a rational number: "); int b=Integer.parseInt(stdin.readLine()); r.setNumerator( a ); r.setDenominator( b ); System.out.println(); System.out.println(); Rational s=new Rational(); System.out.print("Enter numerator of a rational number: "); int c=Integer.parseInt(stdin.readLine()); System.out.print("Enter denominator of a rational number: "); int d=Integer.parseInt(stdin.readLine()); s.setNumerator( c ); s.setDenominator( d ); //在r和s上进行操作 Rational sum=r.add( s );//把两有理数相加的结果作为一个Rational对象,为了能调用toString方法 Rational difference=r.subtract( s) ; Rational product=r.multiply( s ); Rational quotient=r.divide( s ); System.out.println("For r="+r.toString()+" s="+s.toString()); System.out.println("r+s="+sum.toString()); System.out.println("r-s="+difference.toString()); System.out.println("r*s="+product.toString()); System.out.println("r/s="+quotient.toString()); System.out.println(); } } 有了Swing为什么还要SWT? |
作者 | Re:这是书上提示要求和RationalDemo.java [Re:zmj888] |
why
問題兒童 总版主 发贴: 4629 积分: 388 |
于 2005-12-04 18:54
Rational sum=r.add( s ); You need to return a Rational, NOT void! Why would you write public void add(Rational m){ numerator=(numerator*m.getDenominator())+(denominator*m.getNumerator());//得到新的分子 denominator=denominator*m.getDenominator();//得到新的分母 } instead of public Rational add(Rational m) { numerator=(numerator*m.getDenominator())+(denominator*m.getNumerator()); denominator=denominator*m.getDenominator(); return new Rational(numerator, denominator); } (You could ignore the comment beneath.) But I would prefer an immutable version:
why edited on 2005-12-04 19:37
Hibernate的优点 |
作者 | Re:求助 一个编译出错的原因!(不兼容的类型) [Re:zmj888] |
zmj888
发贴: 22 积分: 0 |
于 2005-12-04 19:00
有点理解不了 Windows环境下的tomcat + apache配置(绝对实践操作版) |
作者 | Re:求助 一个编译出错的原因!(不兼容的类型) [Re:zmj888] |
why
問題兒童 总版主 发贴: 4629 积分: 388 |
于 2005-12-04 19:09
zmj888 wrote: Rational sum=r.add( s ); You need to return a Rational, NOT void! 這様也理解不了 那麼閣下應該好好再讀讀基礎書,明白void的意思 恕敝人愛莫能助矣 菜鸟请教,基本程序调试不通,急急急急急急!!! |
作者 | Re:求助 一个编译出错的原因!(不兼容的类型) [Re:zmj888] |
zmj888
发贴: 22 积分: 0 |
于 2005-12-04 19:18
我知道void的用法,我只是对方法的调用有点搞不清 为什么这个Applet不能在浏览器显示啊? |
作者 | Re:求助 一个编译出错的原因!(不兼容的类型) [Re:zmj888] |
why
問題兒童 总版主 发贴: 4629 积分: 388 |
于 2005-12-04 19:21
zmj888 wrote: 敝人搞不清閣下对甚麼搞不清 如果閣下知道void的用法 就不會在要求Rational return type時給它一個void method 为什么这个Applet不能在浏览器显示啊? |
作者 | Re:求助 一个编译出错的原因!(不兼容的类型) [Re:zmj888] |
zmj888
发贴: 22 积分: 0 |
于 2005-12-04 19:22
我才刚刚学 如何用JTable设置表头多行 |
作者 | Re:求助 一个编译出错的原因!(不兼容的类型) [Re:zmj888] |
why
問題兒童 总版主 发贴: 4629 积分: 388 |
于 2005-12-04 19:25
zmj888 wrote: 那麼請好好仔細讀讀書, 不要隨便説:我知道void的用法 学习java的工具(IDE)有什么? |
作者 | Re:求助 一个编译出错的原因!(不兼容的类型) [Re:zmj888] |
zmj888
发贴: 22 积分: 0 |
于 2005-12-04 19:25
我想通了一点,我要用的是计算后的分子分母,而我没返回,所以就无效,是不是 一个程序员的奋斗历程 |
作者 | Re:求助 一个编译出错的原因!(不兼容的类型) [Re:zmj888] |
why
問題兒童 总版主 发贴: 4629 积分: 388 |
于 2005-12-04 19:31
zmj888 wrote: 要返回的是一個Rational object 而閣下卻只寫(抄考)了一個void method. 請恕敝人無暇再跟閣下聊下去了,祝編程愉快 Windows环境下的tomcat + apache配置(绝对实践操作版) |
作者 | Re:求助 一个编译出错的原因!(不兼容的类型) [Re:zmj888] |
zmj888
发贴: 22 积分: 0 |
于 2005-12-04 19:54
thanks for your help Java应用者与<IDE/环境> |
作者 | Re:求助 一个编译出错的原因!(不兼容的类型) [Re:zmj888] |
真空龙卷风
发贴: 26 积分: 0 |
于 2005-12-06 01:55
WHY is a superman! 学习java的工具(IDE)有什么? |
作者 | Re:求助 一个编译出错的原因!(不兼容的类型) [Re:zmj888] |
Pink
发贴: 8 积分: 0 |
于 2005-12-09 00:21
楼主不应该啊,why脾气够好,赞一个 25了才开始学JAVA晚吗? |
已读帖子 新的帖子 被删除的帖子 |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |