Отображать две инстанции array

Добрый день, я разлит в бутылки в разрабатывании двух индикаторных табло для игры (Погружать Флот), в маленькие шаги, у меня есть класс MyDesk где я создал две инстанции индикаторного табло, однако, назвав обоих с класса main (MyDesk barco = new MyDesk() EnemyDesk enemigo = new EnemyDesk()), только увидена первая: он проистекает того, что оба находятся incluídas в том же классе?

import java.util.Arrays;

class MyDesk {

    int [][] barcosvivos;

    public MyDesk(){
        this.barcosvivos = new int[5][5];
        barcosvivos [1][0] = 1; barcosvivos [2][0] = 1; barcosvivos[3][0]=1;
        barcosvivos [1][2]= 1; barcosvivos [1][3]= 1; barcosvivos [1][4]= 1;
        for (int []interno: this.barcosvivos){System.out.println(Arrays.toString(interno));}    
    }

    public MyDesk (int [][] EnemyDesk){
        EnemyDesk = new int [5][5];
        EnemyDesk [0][2] = 3; EnemyDesk [0][3] = 3; EnemyDesk [0][4] = 3;
        EnemyDesk [2][0] = 3; EnemyDesk [2][1] = 3; EnemyDesk [2][2] = 3;
        for (int []interno2: EnemyDesk){System.out.println(Arrays.toString(interno2));}
    }
}

Код, который я использую в Main он:

public class Main {
    public static void main (String [] args){
        MyDesk barco = new MyDesk();
        MyDesk prueba = new MyDesk();
    } 
}
1
задан 22.04.2016, 17:52
2 ответа

Я не знаю, что у тебя есть в классе EnemyDesk но ты перегружаешь неправильным способом строитель класса MyDesk.

import java.util.Arrays;

class MyDesk {

    int [][] barcosvivos;
    int [][] barcosenemigos;

    public MyDesk(){
        barcosvivos = new int[5][5];
        barcosvivos [1][0] = 1; barcosvivos [2][0] = 1; barcosvivos[3][0]=1;
        barcosvivos [1][2]= 1; barcosvivos [1][3]= 1; barcosvivos [1][4]= 1;

        barcosenemigos = new int [5][5];
        barcosenemigos[0][2] = 3; barcosenemigos[0][3] = 3; barcosenemigos[0][4] = 3;
        barcosenemigos[2][0] = 3; barcosenemigos[2][1] = 3; barcosenemigos[2][2] = 3;
    }

    public void showAllyDesk () {
        for (int []interno: this.barcosvivos){System.out.println(Arrays.toString(interno));}    
    }

    public void showEnemyDesk () {
        for (int []interno2: this.barcosenemigos){System.out.println(Arrays.toString(interno2));}
   }
}

И потом в твоем main

MyDesk tablero = new MyDesk();
tablero.showAllyDesk();
tablero.showEnemyDesk();

Конечно, если ты будешь хотеть, чтобы индикаторные табло изменили положение кораблей каждый раз, когда ты это выполняешь, ты будешь должен доставать это из строителя, или вооружать что-то, что производило бы их рискованным способом, действительно я не знаю, где обозначается твой вопрос.

4
ответ дан 24.11.2019, 14:32

Я понимаю, что в Вашем main у него есть что-либо подобное:

MyDesk barco = new MyDesk();
EnemyDesk enemigo = new EnemyDesk();

если предыдущее составляет, у Вас есть класс типа EnemyDesk, но в этой части public MyDesk (int [][] EnemyDesk){ используй то же слово не, если он состоит в том, что то, что он хотел, состоит в том, чтобы мочь перемещать instacia EnemyDesk, или в том, что я просто перехожу из соглашения, я думаю и склоняюсь то, что это вторая, так как внутри строителя Вы относитесь к EnemyDesk как к array интегрированных типов морской какой-то, между другими вещь, но я думаю, что в простой вид он смущен из-за простого, я начинаю видения int [][] EnemyDesk и ранее помещать EnemyDesk enemigo = new EnemyDesk();.

Сейчас, если я понимаю хорошо Ваш вопрос, может быть, то, что он ищет во что-то как это:

public static void main (String[] args) throws java.lang.Exception {

        MyDesk barco = new MyDesk();
        //EnemyDesk enemigo = new EnemyDesk();// es confusa esta parte

        int [][] enemyDesk = null;
        MyDesk barco1 = new MyDesk(enemyDesk);
}

class MyDesk {
int [][] barcosvivos;
    public MyDesk(){
        this.barcosvivos = new int[5][5];
        barcosvivos [1][0] = 1; barcosvivos [2][0] = 1; barcosvivos[3][0]=1;
        barcosvivos [1][2]= 1; barcosvivos [1][3]= 1; barcosvivos [1][4]= 1;
        for (int []interno: this.barcosvivos){System.out.println(Arrays.toString(interno));}    
    }
    public MyDesk (int [][] enemyDesk){ 
        enemyDesk = new int [5][5];
        enemyDesk [0][2] = 3; enemyDesk [0][3] = 3; enemyDesk [0][4] = 3;
        enemyDesk [2][0] = 3; enemyDesk [2][1] = 3; enemyDesk [2][2] = 3;
        for (int []interno2: enemyDesk){System.out.println(Arrays.toString(interno2));}
    }
}

Тест ideone

P.D: чтобы понимать то, что он комментирует на соглашении, смоги смотреть это: https://es.wikipedia.org/wiki/Convenci%C3%B3n_de_Nombres _ (Programaci%C3%B3n) #Java


Я, если это поведение, которое ждало, когда я это разрабатываю, согласно этим Вам, нужно называть в двух строителей для того, чтобы они явились двумя выводами например:

  • MyDesk barco = new MyDesk(); --> llama a -> public MyDesk(){
  • MyDesk barco1 = new MyDesk(enemyDesk); --> llama a -> public MyDesk (int [][] enemyDesk){

если он хочет, чтобы они назвали два независимо от строителя, который называется изначально, смоги использовать this если он не знает, как работать с ними, или поскольку они функционируют, смоги смотреть эти ответы каким-то образом объясняется, как применение этого:

Использование Extends в Java


Update из-за комментария:

Привет Ангел, я попытался с твоим исправлением и действительно добиваюсь, чтобы появились два индикаторных табло, но оба тот же самый,

я не понимаю того, что он говорит с обоими, это тот же самый:

корабль:

[0, 0, 0, 0, 0]
[1, 0, 1, 1, 1]
[1, 0, 0, 0, 0]
[1, 0, 0, 0, 0]
[0, 0, 0, 0, 0]

barco1:

[0, 0, 3, 3, 3]
[0, 0, 0, 0, 0]
[3, 3, 3, 0, 0]
[0, 0, 0, 0, 0]
[0, 0, 0, 0, 0]

а именно, в обоих случаях увидено индикаторное табло MyDesk (), вместо которого во втором он появился с изменениями MyDesk (int [] [] enemyDesk)

если Вы хотите, чтобы было увидено то, что перемещают его, он должен делать какие-то изменения:

Sample main:

    int [][] EnemyDesk = null;
    EnemyDesk = new int [5][5];

    EnemyDesk [0][2] = 1; 
    EnemyDesk [0][3] = 1; 
    EnemyDesk [0][4] = 1;
    EnemyDesk [2][0] = 3; 
    EnemyDesk [2][1] = 3; 
    EnemyDesk [2][2] = 3;

    MyDesk barco1 = new MyDesk(EnemyDesk); //<- le pasas EnemyDesk

Class MyDesk, менять эту часть:

 public MyDesk (int [][] EnemyDesk){

    for (int []interno2: EnemyDesk){System.out.println(Arrays.toString(interno2));}
}

Ты замечаешь: я рекомендую ему анализировать respueta @MarceloZárate, итак, если эта функциональная, для которого у поисков есть лучший рисунок по моему мнению, что та, которую Вы показываете в Вашем вопросе (но я не, если это подходящее, для которого он ищет), того, чтобы быть так мог бы добавлять что-то вроде следующее к упомянутому respueta:

public MyDesk(int [][] EnemyDesk){

    barcosvivos = new int[5][5];
    barcosvivos [1][0] = 1; barcosvivos [2][0] = 1; barcosvivos[3][0]=1;
    barcosvivos [1][2]= 1; barcosvivos [1][3]= 1; barcosvivos [1][4]= 1;

    barcosenemigos = EnemyDesk;  
}
4
ответ дан 24.11.2019, 14:32
  • 1
    Привет Ангел, я попытался с твоим correcci и # 243; n и действительно я добиваюсь, чтобы появились два индикаторных табло, но оба тот же самый, а именно, в обоих случаях увидено индикаторное табло MyDesk(), вместо которых во втором он появлялся бы с изменениями MyDesk (int [][] enemyDesk) и #191; tendr и # 237; во что реализовывать изменения (положения, отличные от кораблей) в самом main? –  Pablo León 22.04.2016, 17:05