Java: Как мне распечатать массив из другого класса?Мой массив содержит другую переменную из этого класса - PullRequest
0 голосов
/ 05 октября 2018

Хорошо, это мой код, я знаю, что он грязный и полон других ошибок, я все еще пытаюсь выучить.Я знаю, что могу сделать это в одном классе, но это отнимает у ООП часть Java.Я полагаю, что если я собираюсь учиться, я могу также научиться правильно.

Я пытался выяснить, как распечатать это charHpArray в течение двух дней, и все, что я нашел в Google, было бесполезно, потому что онине содержит другой массив.По сути, я пытаюсь сделать так, чтобы уровень работал как параметр, поэтому, когда level = 1 hp равно 5, а когда level равно 2 hp, равно 10 и так далее.

Также, если бы вы могли сказать мне, почему level + # не работает, это было бы замечательно.// если ты тоже хочешь это сделать, я пытаюсь сделать mage, arch и war, у всех разные стартовые бонусы, поэтому war будет иметь немного больше здоровья, чем основной level бонус.

** ВСЕ ОТВЕТЫ УЛУЧШЕНЫ, ДАЖЕ ЕСЛИ ОНА ЗНАЧИТ НОВЫЕ ИДЕИ, КОТОРЫЕ Я ПРОСТО ПЫТАЮСЯ УЗНАТЬ **

Спасибо.

Код:

import java.io.*;
import java.util.Scanner;
import java.util.Random;

public class Main {

    public static void main(String[]args) {

        Scanner input = new Scanner(System.in);
        Random roll = new Random();

        System.out.println("Welcome To Adventure Heroes");
        System.out.println("-------------------");

        System.out.println("You awake to the sound of screaming, \"GET AWAY FROM ME!\"");
        System.out.println("You call out to the voice in the distance...");
        System.out.println("There is no answer");
        System.out.println("You run towards the troubled screams in the distance");
        System.out.println("You see a man on the floor being kicked, without hesitation you charge in and push the attacker off the man.");
        System.out.println("You examine the man to see if he is okay. When you look up the attacker is gone.");
        System.out.println("\"Thank you so much... erm, come to think of it I've never seen you around these parts. What is Your name?\"");

        String yourName = input.next();

        System.out.println("\"What a weird name, Hi " + yourName + ", I'm Borgan\"");
        System.out.print("\"Well "  + yourName + ", your journey begins here.\"");

        Character.getcharHp() ;


        public class Character {

            int[] level ={1,2,3,4,5,6,7,8,9,10};
            int[] charHpArray = {5,10,15,20,25,30,35,40,45,50};

            Character(int[]  charHp)
            {
                charHp = charHpArray;
            }

            public int[] getCharHp() {
                return charHpArray; 
            } 

            int xp;
            int def;
            int meleeDmg;
            int magicDmg;

            function increment(array)

                int mage[] = {
                charHpArray[level],
                def = level + 2,
                meleeDmg = level + 1,
                magicDmg = level + 6
            };

            int archer[] = {charHp[level] = level + 4,
            def = level + 3,
            meleeDmg= level + 4,
            magicDmg = level + 1};

        int[] warrior = {getcharHp()[level] = level + 5,
        def = level + 4,
        meleeDmg = level + 3,
        magicDmg = level + 0};

        int player[][] = {mage, archer, warrior};
}

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Я не уверен, что это отвечает на любые ваши вопросы - но вот некоторая информация об использовании массивов в Java.

Я пытался выяснить, как распечатать это charHpArray длядва дня и все, что я нашел в Google, было бесполезно, потому что они не содержат другого массива.По сути, я пытаюсь сделать так, чтобы level работал как параметр, поэтому, когда level = 1 hp равно 5, а когда level равно 2 hp равно 10 и т. Д.

Печать charHpArray с использованием уровня:

Случай, когда элементы массива charHpArray печатаются с использованием level элементов массива в качестве индекса - следующим образом.

int[] level ={1,2,3,4,5,6,7,8,9,10};
int[] charHpArray = {5,10,15,20,25,30,35,40,45,50};

for (int i : level) {
    int j = charHpArray [i];
    System.out.println("Level " + i + ", charHpArray element: " + j);
}

Это ожидаемый результат:

Level 1, charHpArray element: 10
Level 2, charHpArray element: 15
Level 3, charHpArray element: 20
Level 4, charHpArray element: 25
Level 5, charHpArray element: 30
Level 6, charHpArray element: 35
Level 7, charHpArray element: 40
Level 8, charHpArray element: 45
Level 9, charHpArray element: 50
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
        at Testing.main(Testing.java:35)

Обратите внимание, что первый элемент charHpArray 5 не напечатан .Обратите внимание на последнюю строку в выводе: исключение во время выполнения;см. объяснение ниже.


Также, если бы вы могли сказать мне, почему не работает level + #, это было бы здорово.

InJava, массивы имеют элементы и индексы.Первый элемент в массиве имеет индекс 0 (всегда).Следующий элемент имеет индекс 1 и так далее.Таким образом, последний элемент массива имеет индекс: длина массива минус 1.

Вот руководства Oracle по Java для использования Arrays .

Таким образом, если вы попытаетесь получить доступ к элементу в индексе, которого нет в массиве, вы встретите исключение времени выполнения: ArrayIndexOutOfBoundsException

charHpArray имеет 10 элементов.К каждому элементу можно получить доступ и распечатать его индекс следующим образом:

System.out.println("First element charHpArray [0]: " + charHpArray[0]); // this will print 5
System.out.println("Second element charHpArray [1]: " + charHpArray[1]); // this will print 10
...
System.out.println("Tenth element charHpArray [9]: " + charHpArray[9]); // this will print 50

-OR-

for (int i = 0; i < 10; i++) {
    System.out.println("Element " + (i+1) + " of charHpArray: " + charHpArray[i]);
}

Вывод:

Element 1 of charHpArray: 5
Element 2 of charHpArray: 10
Element 3 of charHpArray: 15
Element 4 of charHpArray: 20
Element 5 of charHpArray: 25
Element 6 of charHpArray: 30
Element 7 of charHpArray: 35
Element 8 of charHpArray: 40
Element 9 of charHpArray: 45
Element 10 of charHpArray: 50

В приведенном выше коде 10 - длина массива (массив состоит из 10 элементов).Это может быть достигнуто в коде с помощью переменной длины массива: charHpArray.length

System.out.println("Size of the array: " + charHpArray.length); // this prints 10.

Итак, код для печати может быть таким:

for (int i = 0; i < charHpArray.length; i++) {
    System.out.println("Element " + (i+1) + " of charHpArray: " + charHpArray[i]);
}
0 голосов
/ 05 октября 2018

У вас есть массив уровней, но вы не указываете значение уровня int.Вот почему добавление не работает (потому что уровень - это массив, а вы добавляете к нему int).Я бы предложил попробовать использовать HashMap для отображения уровня в hp (например, вызвать это поле levelHpMap и сделать его постоянным), а затем иметь отдельное поле, которое каждый символ установил, называемое уровнем, которое используется для инициализации атрибутов символов./ fields (вместо hp).

Дополнительные символы расширяют класс Character посредством наследования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...