"的java"我无法使用该静态方法运行代码,但我必须将其设置为静态

时间:2017-10-23 20:18:02

标签: java static

我是学生,我们的老师告诉我们制作一个名为SOMME的静态方法来计算向量总和,(它在代码中称为SOMME)他说它应该是static,我不知道问题出在哪里我几乎尝试了所有可能的方法来解决问题,但没有解决方案。

这是代码:

import java.util.*;
public class Vecteur {// 3D

    public double x;
    public double y;
    public double z;

    public Vecteur (double x,double y,double z ) 
    {

        this.x=x;
        this.y=y;
        this.z=z;
    }


    public void affichage ()
    {  
        System.out.println("("+x+","+y+","+z);
    }

    public double norme() 
    {   
        return Math.sqrt(x*x+y*y+z*z);
    }

    public static Vecteur somme(Vecteur v) // he told us to make it static nom matter what 
    {
         Vecteur u=new Vecteur(0.0,0.0,0.0);

         u.x=x+v.x;
         u.y=y+v.y;
         u.z=z+v.z;

         return u;
    }

    public double produit(Vecteur v)
    {
        return x*v.x+y*v.y+z*v.z; 
    }
}

2 个答案:

答案 0 :(得分:1)

如果你想要它是静态的,你必须这样做:

public static Vecteur somme(Vecteur v1, Vecteur v2) 
{
     Vecteur u = new Vecteur(v1.x + v2.x, v1.y + v2.y, v1.z + v2.z);
     return u;
}

使用一个参数并且能够使用您自己的值来实现它的唯一方法是使用非静态方法,如下所示:

public Vecteur somme(Vecteur other)
{
    Vecteur u = new Vecteur(this.x + other.x, this.y + other.y, this.z + other.z);
    return u;
}

我建议您检查this。 我在下面的课程中添加了两个:

public static class Vecteur {// 3D

public double x;
public double y;
public double z;

public Vecteur (double x,double y,double z ) 
{

    this.x=x;
    this.y=y;
    this.z=z;
}


public void affichage ()
{  
    System.out.println("("+x+","+y+","+z);
}

public double norme() 
{   
    return Math.sqrt(x*x+y*y+z*z);
}

public static Vecteur somme(Vecteur v1, Vecteur v2) // he told us to make it static nom matter what 
{
     Vecteur u = new Vecteur(v1.x + v2.x, v1.y + v2.y, v1.z + v2.z);
     return u;
}

public Vecteur somme(Vecteur other)
{
    Vecteur u = new Vecteur(this.x + other.x, this.y + other.y, this.z + other.z);
    return u;
}

public double produit(Vecteur v)
{
    return x*v.x+y*v.y+z*v.z; 
}

}

答案 1 :(得分:0)

为什么代码不起作用

您正尝试从静态方法访问实例变量,但该方法无效。

如何解决此问题

有两种方法可以做到这一点:

  • 将两个vertors作为方法的参数,并从参数
  • 获取所有值
  • 使方法非静态以允许其访问实例方法