Comp Sci Java Array Problem: Wizard/Elf Character with Random Health and Gold Points

  • Thread starter Thread starter iamjon.smith
  • Start date Start date
  • Tags Tags
    Array Java
AI Thread Summary
The Java application for creating a wizard or elf character is experiencing issues with displaying health values from an array. Initially, the program outputs the memory address instead of the actual health values due to incorrect indexing in the loop. The user corrected the array initialization but encountered an infinite loop after inputting the character name. The problem was resolved by adjusting the loop conditions and ensuring proper array indexing. The final output successfully displays the character's type, name, and health values.
iamjon.smith
Messages
117
Reaction score
3
Ok, I have a java app that allows you to choose a class (wizard/elf) and is supposed to give a random amount of health (an array with 10 values) and 25 points of health. When I run the program it gives me the memory location from the array and not the value. I know I am missing something simple, but can't figure it out. Please help!


Code:
  /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        System.out.println("Welcome to the Video Game Character Applcation");
        Scanner sc = new Scanner(System.in);
        String choice = "y";
        
        while (!choice.equalsIgnoreCase("n"))
        {
            // get the input from the user
           // System.out.print("Enter customer type (r/c): ");
            String characterType = Validator.getString(sc,
                "Enter customer type (Wizard/Elf):   ");
            //String characterType =  getValidCharacterType(sc, "Enter customer type (Wizard/Elf): "); // TODO code application logic here
            System.out.println("You have chosen: "+ characterType);
            System.out.println("Enter your Character's Name: ");
        
        String[] charhealth = new String[10];
        charhealth[0] = "1";
        charhealth[1] = "2";
        charhealth[2] = "3";
        charhealth[3] = "4";
        charhealth[4] = "5";
        charhealth[5] = "6";
        charhealth[6] = "7";
        charhealth[7] = "8";
        charhealth[8] = "9";
        charhealth[9] = "10";
                
        for (int i = 10; i < charhealth.length; i = i++) {
     System.out.print("Health: " + charhealth[i]);
        }

OUTPUT:

Welcome to the Video Game Character Applcation
Enter customer type (Wizard/Elf): wizard
You have chosen: wizard
Enter your Character's Name:

Character Type: wizard
Health: [Ljava.lang.String;@4c56291a
Gold Amount: 25.0

Continue? (y/n):


PROBLEM IS IN RED. PLEASE ADVISE :D
 
Physics news on Phys.org
How about something like this?
Code:
System.out.print("Health: " + charhealth[i].toString());
 
OUTPUT with changes:

run:
Welcome to the Video Game Character Applcation
Enter customer type (Wizard/Elf): elf
You have chosen: elf
Enter your Character's Name:

Character Type: elf
Health: [Ljava.lang.String;@4c56291a
Gold Amount: 25.0

Continue? (y/n):

Same output, but still no value??
 
Last edited:
Ok, originally it was skipping over the "Enter Character Name" line and going straight through the rest of the program.

I changed the code so that I inserted the values at array declaration:

Code:
 public static void main(String[] args) {
        System.out.println("Welcome to the Video Game Character Application");
        Scanner sc = new Scanner(System.in);
        String choice = "y";
        
        while (!choice.equalsIgnoreCase("n"))
        {
            // get the input from the user
           // System.out.print("Enter customer type (r/c): ");
            String characterType = Validator.getString(sc,
                "Enter customer type (Wizard/Elf):   ");
            //String characterType =  getValidCharacterType(sc, "Enter customer type (Wizard/Elf): "); // TODO code application logic here
            System.out.println("You have chosen: "+ characterType);
            String characterName = Validator.getString(sc,
                "Enter Character Name:   ");
            System.out.println("Your Character's Name is: " + characterName);
        
        String[] charhealth = new String[]{"0","1","2","3","4","5","6","7","8","9","10"}; //Simply inserted the values at declaration
      /**  charhealth[0] = "1";
        charhealth[1] = "2";
        charhealth[2] = "3";
        charhealth[3] = "4";
        charhealth[4] = "5";
        charhealth[5] = "6";
        charhealth[6] = "7";
        charhealth[7] = "8";
        charhealth[8] = "9";
        charhealth[9] = "10"; */
                
        for (int i = 10; i < charhealth.length; i = i++) {
     System.out.print("Health: " + charhealth[i].toString());
        }

Now it asks for the character type, and character name, but then it hangs and repeats over and over without stopping...

New Output:

Welcome to the Video Game Character Application
Enter customer type (Wizard/Elf): Elf
You have chosen: Elf
Enter Character Name: Jon
Your Character's Name is: Jon

Health: 10Health: 10Health: 10Health...Line is too long, switch to wrapped mode...
 
Thanks for the pointer Mark44, I got it!
 

Similar threads

Replies
7
Views
2K
Replies
12
Views
2K
Replies
1
Views
2K
Replies
8
Views
3K
Replies
3
Views
3K
Replies
3
Views
8K
Replies
3
Views
2K
Replies
3
Views
6K
Replies
7
Views
8K
Back
Top