Возвращение массива строк в другой класс (включая наследование) и печать - PullRequest
0 голосов
/ 10 октября 2019

У меня проблема с возвратом массива в другой класс или дочерний класс наследования в java.

class A

import java.util.Scanner;

 public class A {
  String [] month = new String[4];  
  Scanner sc = new Scanner(System.in);

 public String[] Select()
  {
        System.out.println("choose");   

        int pick=sc.nextInt();
        switch(pick)
     {
        case 1:
           month[0]="January";          
          break;
        case 2:
            month[0]="February";                
        break;
    case 3:
        month[0]="March";           
        break;
    case 4:             
        month[0]="April";   
        break;

    }
    return month;
}

}

класс C

    public class C extends A{

     public void child_class() 
   {
        System.out.println(month[0]);
   }        

}

класс B

public class B {

    A  select = new A ();
    public void normal_class()
    {       
        System.out.println(select.month[0]);
    }
 }

Основной класс Публичный класс основной {

public static void main(String[] args) {

        A sun = new A();
        B moon = new B();
        C star = new C();

        System.out.println(sun.month[0]);           
        moon.normal_class(); //
        star.child_class();
        }

}

result

null
null
null

Я хотел бы вернуть результат массива в класс или дочерний класс. Если я выберу случай 1 в классе А, я хочу получить результат «Январь» из классов

1 Ответ

0 голосов
/ 10 октября 2019

Пожалуйста, исправьте и заполните классы в вопросе, скопируйте их, как в редакторе, и убедитесь, что они выглядят правильно, используя предварительный просмотр. Я не понимаю, откуда взялись test в print(test.arr[0]); в классе B. Однако вы печатаете объекты, которые вы не инициализировали. Вот почему вы видите ноль.

Когда вы создаете A с A sun = new A();, а затем печатаете его print(sun.arr[0]);, вы никогда не запускали тест или не присваивали значение arr, например.

После редактированияисходные классы.

System.out.println(sun.month[0]); обращается к month в классе A, но так как вы не вызвали метод Select (который должен начинаться со строчной буквы), вы никогда не будете заполнять месяц массива данными.

Попробуйте это:

public class A {
  String [] month = new String[4];  

 public String[] select(int pick)
  {
        switch(pick)
     {
        case 1:
           month[0]="January";          
          break;
        case 2:
            month[0]="February";                
        break;
    case 3:
        month[0]="March";           
        break;
    case 4:             
        month[0]="April";   
        break;

    }
    return month;
}

public static void main (String [] args) {

    A sun = new A();
    B moon = new B();
    C star = new C();

    sun.select(1);
    System.out.println(sun.month[0]); //printing January
    moon.normal_class(); //you are not printing anything here
    star.child_class(); //you are not printing anything here
    }
...