Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  7 1650
Hei! Jeg er blodig fersk i Java(åpnet BlueJ for 2 dager siden) og driver på med en innlevering hvor formålet er å definere klassen Player(med diverse metoder osv). Føler jeg kom meg greit gjennom brorparten av oppgaven helt til jeg begynte på siste delen.
"Det skal opprettes en hovedmetode som oppretter en spiller og så skriver ut informasjonen"
Vis hele sitatet...
Ved første øyekast så dette ut som noe av det "mindre krevende" ved oppgaven, men nå sitter jeg virkelig helt fast til tross for å ha studert boken og utallige nettsider. Forstår forsåvidt formålet til hovedmetoden, klarer bare ikke å forstå hvordan jeg skal formulere det slik at jeg får noe output. All form for veiledning/hjelp settes ufattelig stor pris på!

Kode

public class Player
{
    // The nick of the player
    private String nick;
    // The type of the player
    private String type;
    // The health of the player
    private int health;

    /**
     * Create a new player with a nick and type(warrior,mage,rogue or any other you can think of) 
     */
    public Player(String setNick, String setType)
    {
        // prompts user for parameters to initialize object
        nick = setNick;
        type = setType;
        health = 100;
    }

    /**
     * Choose a nick            
     */
    public void setNick(String setNick)
    {
        // sets the nick of the player
        nick=setNick;
    }
   
    /**
     * Return the nick of the player
     */
    public String getNick()
    {
        // returns the nick of the player
        return nick;
    }
   
    /**
     * Choose a type
     */
    public void setType(String setType)
    {
        // sets the type of the player
        type=setType;
    }
   
    /**
     * Return the type of the player
     */
    public String getType()
    {
        // returns the type of the player
        return type;
    }
    
    /**
     * Check the health of the player
     */
    public int getHealth()
    {
        // returns the health of the player
        return health;
    }
    
    
    /**
     * Change the health of the player
     */
    public void changeHealth(int amount)
    {
        // change the health of the player(health cannot exceed 100 or be less than 0)       
        if(health + amount >= 0 && health + amount <= 100) {
            health = health + amount;
        }
        else {
            System.out.println("ERROR! Health cannot exceed 100 or be less than 0");
        }     
    }
   
    /**
     * Check if player is alive
     */
    public void isAlive()
    {
        // checks if player health is greater than 0 and less or equal to 100
        if(health > 0 && health <= 100) {
            System.out.println("Player is alive!! ");
        }
        else {
            System.out.println("Player is either dead!! ");
        }
    }
    
    /**
     * Print the players information
     */
    public void print()
    {
        // prints the current nick,type and health of the player
        System.out.println("=====================");
        System.out.println(("Nick   € ")  + nick);
        System.out.println("_____________________");
        System.out.println(("Type   € ")  + type);
        System.out.println("_____________________");
        System.out.println(("Health € ") + health);
        System.out.println("=====================");
        
        // prints the current status of the player, either alive or kia(killed in action)
        if(health > 0 && health <= 100) {
            System.out.println("STATUS : ALIVE");
        }
        else {
            System.out.println("STATUS : K.I.A");
        }
       
    }
    /**
     * Main method
     */
    public static void main(String[] args)
    {
        Player player = new Player(args[0], args[1]);
        System.out.println(player);
    }
}
Det første som slår meg er vel at du kjører println på player-objektet, mao. standard toString() kalles, noe som ikke gir nyttig info i dette tilfellet. Hva med player.print()? Det ser ut til at den metoden printer ut en del relevant. Ha den nederst i main.
Hei og takk for svar Prøvde forslaget ditt og lurer på om jeg loker noe fælt her. Kjørte det i windows command og som .jar fil, men det skjer bare ingen ting. Er det noe jeg går glipp av? Må forøvrig bare unnskylde min inkompetanse på dette feltet.
Hei!

Har endret litt på Player klassen din

Player.java


Kode

package test;

public class Player {
	
	 
	    private String nick;
	    private String type;
	    private int health;

	    /**
	     * Create a new player with a nick and type(warrior,mage,rogue or any other you can think of) 
	     */
	    public Player(String nick, String type, int health)
	    {
	        // prompts user for parameters to initialize object
	        setType(type);
	        setNick(nick);
	        this.health = health;
	        
	    
	    	
	    }

	    

		/**
	     * Choose a nick            
	     */
	    public String setNick(String nick)
	    {
	        // sets the nick of the player
	        this.nick = nick;
	        return nick;
	    }
	   
	    /**
	     * Return the nick of the player
	     */
	    public String getNick()
	    {
	        // returns the nick of the player
	        return nick;
	    }
	   
	    /**
	     * Choose a type
	     */
	    public String setType(String type)
	    {
	        // sets the type of the player
	        this.type = type;
	        return type;
	    }
	   
	    /**
	     * Return the type of the player
	     */
	    public String getType()
	    {
	        // returns the type of the player
	        return type;
	    }
	    
	    /**
	     * Check the health of the player
	     */
	    public int getHealth()
	    {
	     return health;
	    
	        // returns the health of the player
	      
	    
	    
}   
	    /**
	     * Change the health of the player
	     */
	    public boolean changeHealth(int amount)
	    {
	        // change the health of the player(health cannot exceed 100 or be less than 0)       
	        if(health + amount >= 0 && health + amount <= 100) {
	            health = health + amount;
	        }
	        else {
	            System.out.println("ERROR! Health cannot exceed 100 or be less than 0");
	        }
			return false;     
	    }
	   
	    /**
	     * Check if player is alive
	     */
	    public boolean isAlive()
	    {
	        // checks if player health is greater than 0 and less or equal to 100
	        if(health > 0 && health <= 100) {
	            System.out.println("Player is alive!! ");
	        }
	       
	        else {
	            System.out.println("Player is either dead!! ");
	        }
			return false;
	    }
	    
	    /**
	     * Print the players information
	     */
	    public String toString()
	    {
	    	return "Nick " + nick + " Type" + type + " Health " + health;
	    	
	    	
			
	        
	    /**
	     * Main method
	     */
	    	
	   
	    
	}

}

Ser at du har satt inn setNick, getType inn i parametern på nesten hver metode.. blir jo bare helt forvirrende. Har endret på dette som du ser i koden.

Til slutt som Nichotin sier så bør du ha med toString metoden, og ikke println.

For all del ikke bruk main i klassen din.. blir bare rotete.

Lag en egen main klasse, så er du i god vei

Slik som dette:

Client.java

Kode

public static void main(String[] args)
    {
        Player player = new Player(args[0], args[1]);
        System.out.println(player);
    }
}
Hvorfor har du args i objektet ditt?.. Her må du jobbe litt

kl er 06.34

Husk øvelse gjør mester!
Sist endret av Zirto; 3. februar 2013 kl. 06:36.
Hei og takk for svar/rydding i koden Skulle kanskje fått med dette tidligere
print: Skriver ut informasjonen om spilleren til terminalvinduet (ved hjelp av
System.out.println) (10%)
Vis hele sitatet...
+ health skal settes til 100 i konstruktøren. Derfor jeg hadde de to delene slik
Har laget en ny klasse til main, men sliter enda med å forstå hva bodyen skal inneholde/hvordan det skal formuleres. Formålet er jo å opprette en ny spiller og deretter printe informasjonen om spilleren, men hva mainen mangler og hvorfor det er args der skjønner jeg virkelig ikke
Bea
Big Bad Wolf
Bea's Avatar
Main-methoden er "inngangs punktet" til koden din. Altså hvor ting starter.

String[] args som er et parameter inn til main methoden er et string array som inneholder alle argumenter som er gitt til programmet. args[0] er først, args[1] er andre argument osv.

Så i main methoden din kan du opprette de Player-objektene du trenger, for så å printe ut informasjonen om dem.

Kode

public class Player {
	
	 
	    private String nick;
	    private String type;
	    private int health;

	    /**
	     * Create a new player with a nick and type(warrior,mage,rogue or any other you can think of) 
	     */
	    public Player(String nick, String type, int health)
	    {
	        // prompts user for parameters to initialize object
	        setType(type);
	        setNick(nick);
	        this.health = health;
	    }
	    
	    public Player(String nick, String type)
	    {
	    	setType(type);
	    	setNick(nick);
	    	health = 100;
	    }

	    /**
	     * Choose a nick            
	     */
	    public String setNick(String nick)
	    {
	        // sets the nick of the player
	        this.nick = nick;
	        return nick;
	    }
	   
	    /**
	     * Return the nick of the player
	     */
	    public String getNick()
	    {
	        // returns the nick of the player
	        return nick;
	    }
	   
	    /**
	     * Choose a type
	     */
	    public String setType(String type)
	    {
	        // sets the type of the player
	        this.type = type;
	        return type;
	    }
	   
	    /**
	     * Return the type of the player
	     */
	    public String getType()
	    {
	        // returns the type of the player
	        return type;
	    }
	    
	    /**
	     * Check the health of the player
	     */
	    public int getHealth()
	    {
	    	// returns the health of the player
	    	return health;
	     }
	    
	    /**
	     * Change the health of the player
	     */
	    public boolean changeHealth(int amount)
	    {
	        // change the health of the player(health cannot exceed 100 or be less than 0)       
	        if(health + amount >= 0 && health + amount <= 100) {
	            health = health + amount;
	        }
	        else {
	            System.out.println("ERROR! Health cannot exceed 100 or be less than 0");
	        }
			return false;     
	    }
	   
	    /**
	     * Check if player is alive
	     */
	    public boolean isAlive()
	    {
	        // checks if player health is greater than 0 and less or equal to 100
	        if(health > 0 && health <= 100) {
	            System.out.println("Player is alive!! ");
	        }
	       
	        else {
	            System.out.println("Player is either dead!! ");
	        }
			return false;
	    }
	    
	    /**
	     * Print the players information
	     */
	    public String toString()
	    {
	    	return "Nick: " + nick + " | Type: " + type + " | Health: " + health;
	    }

	    
		public static void main(String[] args)
		{
		    Player player = new Player(args[0], args[1]);
		    System.out.println(player);
		    
		    System.out.println("\nEr spiller i live?");
		    player.isAlive();
		    
		    System.out.println(player.getHealth());
		    
		    player.changeHealth(-100);
		    
		    System.out.println("\nEr spiller i live?");
		    player.isAlive();
		    
		    System.out.println(player.getHealth());
		}
}
Om jeg nå kjører programmet med to argumenter (args[0], args[1]):
<navnpåprogram> s1gh Warrior

Blir output:

Kode

Nick: s1gh | Type: Warrior | Health: 100

Er spiller i live?
Player is alive!! 
100

Er spiller i live?
Player is either dead!! 
0
Programmet kaller konstruktøren som har to parametere, og setter dermed nick og type til det jeg bestemte, pluss at den automatisk setter health til 100.

Etter dette skriver programmet ut diverse informasjon om spillerobjektet.
Sist endret av s1gh; 3. februar 2013 kl. 14:02.
Tusen takk til Bea og s1gh for svar og praktisk eksempel