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

  • Context: Comp Sci 
  • Thread starter Thread starter iamjon.smith
  • Start date Start date
  • Tags Tags
    Array Java
Click For Summary

Discussion Overview

The discussion revolves around a Java programming issue related to creating a character class (wizard/elf) in a video game application. Participants are addressing problems with displaying health values from an array and managing program flow, including user input handling.

Discussion Character

  • Technical explanation
  • Debate/contested

Main Points Raised

  • One participant notes that the program outputs a memory location instead of the health value from the array, indicating a potential issue with how the array is being accessed.
  • Another participant suggests using the toString() method to retrieve the value from the array, but the output remains unchanged.
  • A participant modifies the code to initialize the array with values at declaration, but encounters an issue where the program hangs and repeats output without stopping.
  • There is a mention of the program skipping the character name input initially, which was later corrected.

Areas of Agreement / Disagreement

Participants express uncertainty about the correct method to display the health values and how to manage the program flow effectively. No consensus is reached on the best solution to the issues presented.

Contextual Notes

There are unresolved issues regarding the loop control and array indexing, particularly with the for loop starting at index 10, which exceeds the array length. The handling of user input and program flow also remains problematic.

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 ·
Replies
7
Views
3K
  • · Replies 12 ·
Replies
12
Views
2K
  • · Replies 18 ·
Replies
18
Views
3K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 8 ·
Replies
8
Views
3K
  • · Replies 3 ·
Replies
3
Views
3K
  • · Replies 3 ·
Replies
3
Views
8K
  • · Replies 3 ·
Replies
3
Views
3K
  • · Replies 3 ·
Replies
3
Views
6K
  • · Replies 7 ·
Replies
7
Views
8K