Что я здесь сделал не так и как мне это исправить?

#java

#java

Вопрос:

Итак, я создал код для получения статистики персонажей игры, но он всегда показывает мне две ошибки. Что я делаю не так? Любая помощь была бы высоко оценена, потому что я новичок в этих командах. Заранее спасибо.

Вот часть кода:

 public static void ShowStats(String Name, int Level, int Health, int ArrowCount, int Slots, int SlotsFilled, boolean hasJob, boolean hasEquipment, boolean hasMagicBook, String Jobs[], String JobLevels[], String Equipments[], String Crystals[], boolean isSoulBonded[], boolean isArrow[], int JobCount, int EquipmentCount)
    {
        int i;
        System.out.println("Name: " Name);
        System.out.println("Level: " Level);
        System.out.println("Health: " Health);
        if(hasJob)
        {
            System.out.println("Jobs:");
            for(i=0;i<JobCount;i  )
                System.out.println(Jobs[i] " job at level " JobLevels[i] ".");
        }
        if(hasEquipment)
        {
            System.out.println("Equipments:");
            for(i=0;i<EquipmentCount;i  )
            {
                if(isArrow[i])
                {
                    System.out.println(ArrowCount " " Equipments[i]);
                    continue;
                }
                if(isSoulBonded[i])
                {
                    System.out.println(Equipments[i] " (Soul Bonded)");
                    continue;
                }
                System.out.println(Equipments[i]);
            }
        }
        if(hasMagicBook)
        {
            System.out.println("Magic Book has " SlotsFilled "/" Slots " Crystals");
            System.out.println("Crystals:");
            for(i=0;i<SlotsFilled;i  )
                System.out.println(Crystals[i]);
        }
    }
    public static void GetStats(int c)
    {
        String n="";
        int l=0,h=0,ac=0,s=0,sf=0,jc=0,ec=0;
        boolean hj=false,he=false,mb=false;
        if(c==0)
        {
            n="TestChar";
            l=1;
            h=52;
            hj=true;
            jc=3;
            String j[]={"Fighter","Mage","Alchemist"};
            String jl[]={"Neophyte","Neophyte","Neophyte"};
            he=true;
            ec=6;
            String e[]={"Armor","Trousers","Boots","Dagger","Magic Book Lvl 1","Bag"};
            boolean sb[]={false,false,false,false,false,false};
            boolean a[]={false,false,false,false,false,false};
            mb=true;
        }
        else if(c==1)
        {
            n="TestChar2";
            l=5;
            h=68;
            hj=true;
            jc=2;
            String j[]={"Fighter","Mage"};
            String jl[]={"Apprentice","Apprentice"};
            he=true;
            ec=6;
            String e[]={"Armor","Leather Trousers","Leather Boots","Sword","Magic Book Lvl 2","Bag"};
            boolean sb[]={true,false,false,false,false,false};
            boolean a[]={false,false,false,false,false,false};
            mb=true;
        }
        else
        {
            String j[]={"","",""};
            String jl[]={"","",""};
            String e[]={"","","","","","","",""};
            String cf[] ={"","","","",""};
            boolean sb[]={false,false,false,false,false,false,false,false};
            boolean a[]={false,false,false,false,false,false,false,false};
        }       
        ShowStats(n,l,h,ac,s,sf,hj,he,mb,j[],jl[],e[],c[],sb[],a[],jc,ec);
    }
  

Компилятор показывает, что ShowStats(n,l,h,ac,s,sf,hj,he,mb,j[],jl[],e[],c[],sb[],a[],jc,ec); выдает ошибку, но почему? Я бы очень хотел, если бы я получил какую-либо помощь, и я немного новичок в этом, поэтому любое объяснение в также действительно приветствуется.

Комментарии:

1. В чем ошибка? Пожалуйста, покажите обратную трассировку.

2. Я не вижу new … и ваш метод void .

3. Вы столкнулись с проблемой, поскольку переменные вашего массива, начинающиеся с j [], jl [], e [], c [], sb [], a [], недоступны вызывающей функции. Чтобы исправить, создайте их в заголовке функции и манипулируйте условиями по мере необходимости.

Ответ №1:

Измените объявления вашего массива и назначение, например, для строки[] j, вы можете сделать то же самое и для других.

 public static void GetStats(int c)
{
    String n="";
    int l=0,h=0,ac=0,s=0,sf=0,jc=0,ec=0;
    boolean hj=false,he=false,mb=false;
    String[] j;
    if(c==0)
    {

        j[0]="Fighter";
        j[1] ="Mage";
        j[2]= "Alchemist";    
    }
    else if(c==1)
    {

       j[0]="Fighter";
       j[1] = "Mage";

    } ...