Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.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
Java 无法从静态上下文引用非静态方法_Java_Error Handling - Fatal编程技术网

Java 无法从静态上下文引用非静态方法

Java 无法从静态上下文引用非静态方法,java,error-handling,Java,Error Handling,您好,我现在得到的常见错误是 “Domino.java:32:错误:无法从静态上下文引用非静态方法getValue()” 我理解这是一个问题,因为它只是getValue方法的一个实例。在这个compareTo方法中,我试图传入一些domino,并将其与集合domino进行比较,然后根据一些比较返回-1,0,1。我需要domino两侧的总和来比较它们,这就是为什么我试图获取domino.getValue(),此时我不确定如何实现它。如有任何建议或帮助,将不胜感激 public class Domi

您好,我现在得到的常见错误是 “Domino.java:32:错误:无法从静态上下文引用非静态方法getValue()” 我理解这是一个问题,因为它只是getValue方法的一个实例。在这个compareTo方法中,我试图传入一些domino,并将其与集合domino进行比较,然后根据一些比较返回-1,0,1。我需要domino两侧的总和来比较它们,这就是为什么我试图获取domino.getValue(),此时我不确定如何实现它。如有任何建议或帮助,将不胜感激

public class Domino {
    public static int side1;
    public static int side2;

       public Domino(int aside, int bside){
           side1 = aside;
           side2 = bside ;
       }
       public Domino() {
           side1 = 4;
           side2 = 5;
       }

       public boolean isDouble(){
           if(side1 == side2) {
               return true;
           }
           else {
               return false;
           }
       }
       public int getValue(){
          return side1 + side2;
       }
       public int compareTo(Domino someDomino)
         {
            int count = 0;
            if(Domino.getValue() < someDomino.getValue()){
               count = -1; 
             }if(Domino.getValue() > someDomino.getValue()){
                   count = 1; 
                 }
             if(Domino.getValue() == someDomino.getValue()){
                   count = -0; 
                 }
           return count;  
         }

       public static void main(String args[]) {

       }

}
公共类Domino{
公共静态int side1;
公共静态int side2;
公共Domino(int-aside,int-bside){
侧1=侧边;
侧2=b侧;
}
公共多米诺骨牌(){
侧1=4;
侧2=5;
}
公共布尔isDouble(){
if(side1==side2){
返回true;
}
否则{
返回false;
}
}
public int getValue(){
返回侧1+2;
}
公共整数比较(Domino someDomino)
{
整数计数=0;
if(Domino.getValue()someDomino.getValue()){
计数=1;
}
if(Domino.getValue()==someDomino.getValue()){
计数=-0;
}
返回计数;
}
公共静态void main(字符串参数[]){
}
}

这是因为您在compareTo方法中静态地调用Domino类上的方法。摆脱
Domino。
对getValue()的部分调用

public int compareTo(Domino-someDomino)
{
整数计数=0;
if(getValue()someDomino.getValue()){
计数=1;
}
如果(getValue()==someDomino.getValue()){
计数=-0;
}
返回计数;
}

这是因为您在compareTo方法中静态地调用Domino类上的方法。摆脱
Domino。
对getValue()的部分调用

public int compareTo(Domino-someDomino)
{
整数计数=0;
if(getValue()someDomino.getValue()){
计数=1;
}
如果(getValue()==someDomino.getValue()){
计数=-0;
}
返回计数;
}

Domino
是类本身,您需要将参数中的对象(显式参数)与当前实例(隐式参数)进行比较,当前实例是调用方法的实例,它是
this

public int compareTo(Domino someDomino){
    int count = 0;
    if(this.getValue() < someDomino.getValue()){
        count = -1; 
    }else if(this.getValue() > someDomino.getValue()){
        count = 1; 
    }
    return count;  
}
此外:

  • 如果,请使用
    else,因为您的测试不能同时为真
  • 无需在末尾检查
    相等性
    ,如果它不是
    且不是code>
    ,则它是
    =
    ,计数将已经
    相等
    0
  • 重要
    公共静态内部1=>
    公共内部侧1如果它们是静态的,那么它们对于每个Domino都是相同的

添加可比较的界面是一个很好的做法,为了允许对列表中的多米诺骨牌进行排序,将自动使用方法
compareTo()

public class Domino implements Comparable<Domino>{...}
公共类Domino实现了{…}

Domino
是类本身,您需要将参数中的对象(显式参数)与当前实例(隐式参数)进行比较,当前实例是调用方法的实例,它是
this

public int compareTo(Domino someDomino){
    int count = 0;
    if(this.getValue() < someDomino.getValue()){
        count = -1; 
    }else if(this.getValue() > someDomino.getValue()){
        count = 1; 
    }
    return count;  
}
此外:

  • 如果,请使用
    else,因为您的测试不能同时为真
  • 无需在末尾检查
    相等性
    ,如果它不是
    且不是code>
    ,则它是
    =
    ,计数将已经
    相等
    0
  • 重要
    公共静态内部1=>
    公共内部侧1如果它们是静态的,那么它们对于每个Domino都是相同的

添加可比较的界面是一个很好的做法,为了允许对列表中的多米诺骨牌进行排序,将自动使用方法
compareTo()

public class Domino implements Comparable<Domino>{...}
公共类Domino实现了{…}

除了您要问的有关compareTo(…)方法的问题外,这将失败,因为您将每边的值存储为静态变量,而不是实例变量。当您创建第二个Domino时,它将覆盖第一个Domino存储的值-它们都将具有相同的值。除了您询问的有关compareTo(…)方法的问题之外,这将失败,因为您将每一方的值存储为静态变量,而不是实例变量。当您创建第二个Domino时,它将覆盖第一个Domino存储的值-它们都具有相同的值。在编写类时,这将始终返回0,因为Domino实例将值存储为类变量。若side1和side2是非静态的,那个就可以了。@JonathanS,在你们评论之前我刚刚编辑过;)在编写类时,它将始终返回0,因为Domino实例将值存储为类变量。若side1和side2是非静态的,那个就可以了。@JonathanS,在你们评论之前我刚刚编辑过;)