【问题标题】:I need to pass by parameter one only of several attributes of a class我只需要传递一个类的几个属性中的一个参数
【发布时间】:2019-12-08 08:55:05
【问题描述】:

我有一个名为Posicion 的类,它有两个属性,我只需将参数中的一个从Posicion 传递给名为Caballo 的类。 来自Caballo 的构造方法必须接受一个Posicion 类型的参数,但只能接受它的一个属性,特别是名为columna 的参数。 我的意思是语法有问题。

我尝试将Caballo类的构造方法放入这个: Caballo(Color color, Posicion.columna) 但显然它给了我一个错误。

位置类:

public class Posicion {

    private int fila;
    private char columna;

    Posicion (int fila, char columna){

        if (fila < 1 || fila > 8 || columna < 'a' || columna > 'h') {
            throw new IllegalArgumentException("Valores fuera de rango");
        }else {
            this.fila=fila;
            this.columna=columna;
        }

    }

    Posicion (Posicion p){

        fila=p.fila;
        columna=p.columna;

    }

    public boolean equals(Posicion fc_A, Posicion fc_B) {

        if (fc_A.fila == fc_B.fila && fc_A.columna == fc_B.columna) {
            return true;
        }else {
            return false;
        }

    }

    public void setFila(int fila) {

        if (fila < 1 || fila > 8) {
            throw new IllegalArgumentException("Los números de fila"
                    + "deben estar comprendidos entre 1 y 8 ambos inclusive");
        }else {
            this.fila=fila;
        }

    }

    public int getFila() {
        return this.fila;
    }

    public void setColumna(char columna) {

        if (columna < 'a' || columna > 'h') {
            throw new IllegalArgumentException("Las columnas deben estar comprendidas entre las letras"
                    + "a y h");
        }else {
            this.columna=columna;
        }
    }

    public char getColumna() {
        return columna;
    }

    public String toString() {

        String mensaje="El caballo se encuentra en la posición fila: " + fila + " "
                + "columna: " + columna;

        return mensaje;

    }

}

Caballo 类直到构造函数第三个构造方法:

public class Caballo {

    private Color color;
    private Posicion posicion;

    Caballo(){
        posicion.setFila(8);
        posicion.setColumna('b');
    }

    Caballo(Color color){

        this.color=color;

        if(this.color==Color.BLANCO) {

            this.posicion.setFila(1);
            this.posicion.setColumna('b');

        }else if (this.color==Color.NEGRO) {

            this.posicion.setFila(8);
            this.posicion.setColumna('b');

        }

    }

    Caballo(Color color, Posicion.columna){ <-- This is the error

        this.color=color;
        this.posicion=columna;

        if(this.posicion.)

    }

我有一个语法错误。 非常感谢!!!!!!

【问题讨论】:

    标签: java syntax parameters


    【解决方案1】:

    感谢大家。我无法很好地解释自己,所以我很抱歉。属性 'columna' 的类型是 char 并且 y 尝试将参数 columna 设置为 char 并且它似乎正在工作,我不确定,但至少不会给我一个语法错误。

    这是我写的:

    > Caballo(Color color, char columna){ <-- Not an error with char type
    
            this.color=color;
            this.posicion.setColumna(columna);
    

    再次感谢大家。

    P.S:对不起我的英语。

    【讨论】:

      【解决方案2】:

      你可以试试

      Caballo(Color color, Posicion posicion){ <-- This is the error
      
          this.color=color;
          this.posicion.setColumna(posicion.columna);
      

      注意:这里您实际上是在传递整个对象,但选择要分配的一个属性(列)。

      【讨论】:

        【解决方案3】:

        只需删除点...假设 columna 是一个 Posicion

        Caballo(Color color, Posicion columna){ <-- This is the error
        
            this.color=color;
            this.posicion=columna;
        
            if(this.posicion.)
        
        }
        

        【讨论】:

          【解决方案4】:

          你在Posicioncolumna之间加了一个点,用空格代替。

          【讨论】:

            【解决方案5】:

            您没有为第二个参数指定类型和变量名:

            Caballo(Color color, Posicion.columna){ <-- This is the error
            

            我猜你想要一个空间:

            Caballo(Color color, Posicion columna){ <-- This is the error
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2021-09-09
              • 1970-01-01
              • 2017-02-21
              • 1970-01-01
              • 2018-08-28
              • 2021-06-29
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多