家庭作业帮助需要使用MyMath的java接口
好吧,我想我已经准备好了。但是现在我遇到了接口方法的问题。接口方法使用泛型类型和1对象。但是分配需要添加两个对象。我现在被困在这一点上了。我不知道如何编写add(to)接口,因为我只能向方法发送一个对象。我尝试过使用value1.add(value2),但是当我测试这些值时,似乎只会出现values1的值。我不知道value2在哪里这是我的类和接口家庭作业帮助需要使用MyMath的java接口,java,interface,Java,Interface,好吧,我想我已经准备好了。但是现在我遇到了接口方法的问题。接口方法使用泛型类型和1对象。但是分配需要添加两个对象。我现在被困在这一点上了。我不知道如何编写add(to)接口,因为我只能向方法发送一个对象。我尝试过使用value1.add(value2),但是当我测试这些值时,似乎只会出现values1的值。我不知道value2在哪里这是我的类和接口 public class MyFraction implements MyMath<MyFraction> { private List
public class MyFraction implements MyMath<MyFraction> {
private List<Character> sign = new ArrayList<Character>();
private List<Integer> numerator = new ArrayList<Integer>();
private List<Integer> denominator = new ArrayList<Integer>();
public MyFraction(int numerator, int denominator, char sign) {
this.numerator.add(numerator);
this.denominator.add(denominator);
this.sign.add(sign);
}
public MyFraction(){}
public static void main(String[] args) {
MyFraction run = new MyFraction();
run.start();
}
private void start() {
char sign = JOptionPane.showInputDialog(null, "Enter - for negative + for positive number ").charAt(0);
int numerator = Math.abs(Integer.parseInt(JOptionPane.showInputDialog(null, "Enter a numerator ")));
int denominator = Math.abs(Integer.parseInt(JOptionPane.showInputDialog(null, "Enter a denominator ")));
MyFraction value1 = new MyFraction(numerator, denominator, sign);
sign = JOptionPane.showInputDialog(null, "Enter - for negative + for positive number ").charAt(0);
numerator = Math.abs(Integer.parseInt(JOptionPane.showInputDialog(null, "Enter a numerator ")));
denominator = Math.abs(Integer.parseInt(JOptionPane.showInputDialog(null, "Enter a denominator ")));
MyFraction value2 = new MyFraction(numerator, denominator, sign);
System.out.println("numerator 1: "+value1.getNumerator() );
System.out.println("denominator 1: "+value1.getDenominator() );
System.out.println("sign 1: "+value1.getSign() );
System.out.println();
System.out.println("numerator 2: "+value2.getNumerator() );
System.out.println("denominator 2: "+value2.getDenominator() );
System.out.println("sign 2: "+value2.getSign() );
}
public int getNumerator(){
int value = this.numerator.get(0);
return value;
}
public int getDenominator(){
int value = this.denominator.get(0);
return value;
}
public char getSign(){
char value = this.sign.get(0);
return value;
}
@Override
public MyFraction add(MyFraction o) {
return null;
}
@Override
public MyFraction subtract(MyFraction o) {
// TODO Auto-generated method stub
return null;
}
@Override
public MyFraction divide(MyFraction o) {
// TODO Auto-generated method stub
return null;
}
@Override
public MyFraction multiply(MyFraction o) {
// TODO Auto-generated method stub
return null;
}
公共类MyFraction实现MyMath{
private List sign=new ArrayList();
私有列表分子=新的ArrayList();
私有列表分母=新的ArrayList();
公共MyFraction(整数分子、整数分母、字符符号){
本.分子.加(分子);
本.分母.加(分母);
this.sign.add(sign);
}
公共MyFraction(){}
公共静态void main(字符串[]args){
我的分数运行=新的我的分数();
run.start();
}
私有void start(){
char sign=JOptionPane.showInputDialog(null,“输入-表示负数+表示正数”)。charAt(0);
int-numerator=Math.abs(Integer.parseInt(JOptionPane.showInputDialog)(null,“输入分子”));
int denominor=Math.abs(Integer.parseInt(JOptionPane.showInputDialog)(null,“输入分母”));
MyFraction值1=新的MyFraction(分子、分母、符号);
sign=JOptionPane.showInputDialog(null,“输入-表示负数+表示正数”).charAt(0);
numerator=Math.abs(Integer.parseInt(JOptionPane.showInputDialog)(null,“输入分子”));
Denominor=Math.abs(Integer.parseInt(JOptionPane.showInputDialog)(null,“输入分母”));
MyFraction value2=新的MyFraction(分子、分母、符号);
System.out.println(“分子1:+value1.getNumerator());
System.out.println(“分母1:+value1.getDenominator());
System.out.println(“符号1:+value1.getSign());
System.out.println();
System.out.println(“分子2:+value2.getNumerator());
System.out.println(“分母2:+value2.getDenominator());
System.out.println(“符号2:+value2.getSign());
}
公共整型getNumerator(){
int value=this.numerator.get(0);
返回值;
}
公共整数getDenominator(){
int value=this.densor.get(0);
返回值;
}
公共字符getSign(){
char value=this.sign.get(0);
返回值;
}
@凌驾
公共MyFraction添加(MyFraction o){
返回null;
}
@凌驾
公共MyFraction减法(MyFraction o){
//TODO自动生成的方法存根
返回null;
}
@凌驾
公共MyFraction divide(MyFraction o){
//TODO自动生成的方法存根
返回null;
}
@凌驾
公共MyFraction乘法(MyFraction o){
//TODO自动生成的方法存根
返回null;
}
}
公共接口MyMath{
公共电讯管理局(电讯管理局);
公共T减法(to);
公共T分割(to);
公共T乘(to);
}一个
接口
在某种程度上是一个契约,即“实现我的人必须包含我声明的所有方法的实现”。每个类
实现了接口
的都以图形方式签署了该契约,因此必须拥有自己的这些方法的实现
在类中,您缺少整个接口的实现,这就是代码没有编译的原因。您的类应该如下所示:
public class MyFraction implements MyMath<MyFraction> {
....
}
//interface memebers
@Override
public MyFraction subtract(MyFraction o){
//do subtraction here
return null;
}
@Override
public MyFraction divide(MyFraction o){
//do division here
return null;
}
@Override
public MyFraction multiply(MyFraction o){
//do multiplication here
return null;
}
@Override
public MyFraction add(MyFraction o) {
// do adding here
return null;
}
}
公共类MyFraction实现MyMath{
....
}
//接口成员
@凌驾
公共MyFraction减法(MyFraction o){
//在这里做减法
返回null;
}
@凌驾
公共MyFraction divide(MyFraction o){
//在这里做除法
返回null;
}
@凌驾
公共MyFraction乘法(MyFraction o){
//在这里做乘法
返回null;
}
@凌驾
公共MyFraction添加(MyFraction o){
//你要在这里添加吗
返回null;
}
}
请后退一步,想想迄今为止您得到的解决方案。您的类MyFraction
包含四个列表-为什么?“My”MyFraction
由分子、分母和符号组成
我会选择一个字符来存储符号->我不知道。但是你应该考虑分子和分母的负值,例如分子是-4,分母是-2。当符号输入为“-”时,什么值具有MyFraction
要创建MyFraction
实例,您应该能够使用如下构造函数
public MyFraction(Integer theNumerator, Integer theDenominator, Character theSign)
记住实现接口的所有方法。到目前为止,您只获得了方法add
,由于缺少实现,代码将无法编译。接口就像一个骨架。它说明了如果您实现了有助于保持代码干净和可维护的接口,那么类的设计应该如何。请注意,类中包含逻辑,您需要在你的界面中实现所有提到的方法。A,我知道我删除了代码,因为这些方法是空的。可能应该发布完整的代码。我读了这本书,知道接口使用什么规则。我知道接口方法都是公共的,静态的,变量是最终的。我知道无论哪个类使用接口,都必须使用接口中的所有方法。这本书从这个赋值开始有点倒退,让接口有代码,而这个类只是向代码发送信息并返回一些值。在这项作业中,它是向后的,这就是我被卡住的地方。据我所知,MyMath使用T作为对象,我不知道如何。。如果书上说接口可以有方法的实现,你可能正在读一本关于Java8(默认方法存在的地方)的书。Java8还没有正式发布。好吧,我只是重写了我的代码,并创建了t
public MyFraction(Integer theNumerator, Integer theDenominator, Character theSign)