Java:如何从另一个类打印数组?我的数组包含该类中的另一个变量

时间:2018-10-04 23:49:40

标签: java arrays class oop methods

好的,这是我的代码,我知道它的代码混乱且充满其他错误,我仍在尝试学习。我知道我可以在一堂课中做到这一点,但是这与Java的OOP部分无关。我认为如果我要学习的话,我还是会学得对。

我一直在努力寻找如何打印charHpArray的两天时间,我在Google上发现的所有内容都没有用,因为它们不包含另一个数组。本质上,我正在尝试使其级别用作参数,因此,当level = 1 hp为5时,而level为2 hp为10时,依此类推。

如果您能告诉我为什么level + #不能正常工作,那将是很好的。 //如果您也想对此进行破解,我正在尝试使magearchwar的起始奖金都不同,因此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 :(得分:0)

您有一个关卡数组,但未指定关卡的int值。这就是为什么添加不起作用的原因(因为level是一个数组,并且您要向其中添加一个int)。我建议尝试利用HashMap将级别映射到hp(例如,将此字段称为levelHpMap,并使其保持不变),然后让每个字符都设置一个单独的字段,称为level,该字段用于初始化字符属性/ fields(而不是hp)。

其他字符将通过继承扩展Character类。

答案 1 :(得分:0)

我不确定这是否会回答您的任何问题-但这是有关在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是 not 打印的。注意输出的最后一行:运行时异常;请参阅下面的说明。


  

如果您能告诉我为什么水平+#不起作用,那将会是   很好。

在Java中,数组具有元素和索引。数组中的第一个元素的索引为0(始终)。下一个元素的索引为1,依此类推。因此,数组的最后一个元素的索引为:数组长度 1。

这是使用Arrays的Oracle Java教程。

因此,如果尝试访问数组中不存在的索引中的元素,则会遇到运行时异常: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个元素)。可以在代码中使用数组的length变量来实现: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]);
}