Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
家庭作业帮助需要使用MyMath的java接口_Java_Interface - Fatal编程技术网

家庭作业帮助需要使用MyMath的java接口

家庭作业帮助需要使用MyMath的java接口,java,interface,Java,Interface,好吧,我想我已经准备好了。但是现在我遇到了接口方法的问题。接口方法使用泛型类型和1对象。但是分配需要添加两个对象。我现在被困在这一点上了。我不知道如何编写add(to)接口,因为我只能向方法发送一个对象。我尝试过使用value1.add(value2),但是当我测试这些值时,似乎只会出现values1的值。我不知道value2在哪里这是我的类和接口 public class MyFraction implements MyMath<MyFraction> { private List

好吧,我想我已经准备好了。但是现在我遇到了接口方法的问题。接口方法使用泛型类型和1对象。但是分配需要添加两个对象。我现在被困在这一点上了。我不知道如何编写add(to)接口,因为我只能向方法发送一个对象。我尝试过使用value1.add(value2),但是当我测试这些值时,似乎只会出现values1的值。我不知道value2在哪里这是我的类和接口

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)