Vinnaren i pepparkakshustävlingen!
2008-02-03, 17:39
  #1
Medlem
dests avatar
Har lite problem med min kod till ett ganska enkelt java program.

Har 3 st objekt av klassen Person. Problemet är när jag ska spara en viss persons namn tex person_1.name(namn); så verkar det sparas för alla objekt av klassen Person. Så när jag vill visa person_3:s namn så visar den det för person_1.

Är inte helt inne på java än då jag precis börjat med det men någon som vet en lösning på problemet?

Kod:
import javax.swing.*;
import java.io.*;

//Main klass
public class Personregister {
    
    public static void main(String[] args) {
  
        Person person_1 = new Person();
        Person person_2 = new Person();
        Person person_3 = new Person();
    
      
        int getAge = 0, getPnr= 0, val, val_av_person;
        String getName = "";       
        boolean close = false;
        
        while (close == false){
            
            val = Integer.parseInt(JOptionPane.showInputDialog("1. Se personuppgifter\n 2. Ändra personuppgifter\n 3. Stäng av."));
            switch (val){
                case 1:
                    val_av_person = Integer.parseInt(JOptionPane.showInputDialog("Vilken person vill du visa?"));
                    if (val_av_person == 1)
                    {
                        getName = person_1.returnName();
                        getAge = person_1.returnAge();
                        getPnr = person_1.returnPnr();
                        System.out.println(getName);
                        System.out.println(getAge);
                        System.out.println(getPnr);
                    }
                    else if (val_av_person == 2)
             
                    {
                        getName = person_2.returnName();
                        getAge = person_2.returnAge();
                        getPnr = person_2.returnPnr();
                        System.out.println(getName);
                        System.out.println(getAge);
                        System.out.println(getPnr);
                    }
                        else
                        {
                            getName = person_3.returnName();
                            getAge = person_3.returnAge();
                            getPnr = person_3.returnPnr();
                            System.out.println(getName);
                            System.out.println(getAge);
                            System.out.println(getPnr);
                        }
                         break;
            
                case 2:
                   
                    Create_Person(person_1, person_2, person_3);
                    
                    break;
                    
                case 3:
                    close = true;        
                    break;        
            }
            
        }
        
      }
    public static void Create_Person (Person person_1, Person person_2, Person person_3){
        
        
        String namn;
        int Newage = 0, pnr = 0, val_av_person = 0;

        
        val_av_person = Integer.parseInt(JOptionPane.showInputDialog("Vilken person vill du ändra på?"));
        if (val_av_person == 1)
        {
            
            namn = JOptionPane.showInputDialog("Vad heter du?");
            Newage = Integer.parseInt(JOptionPane.showInputDialog("Hur gammal är du?"));
            pnr = Integer.parseInt(JOptionPane.showInputDialog("Vad är ditt personnummer"));
            person_1.name(namn);
            person_1.age(Newage);
            person_1.PersonNummer(pnr);
        }
        else if (val_av_person == 2)
        {
            namn = JOptionPane.showInputDialog("Vad heter du?");
            Newage = Integer.parseInt(JOptionPane.showInputDialog("Hur gammal är du?"));
            pnr = Integer.parseInt(JOptionPane.showInputDialog("Vad är ditt personnummer"));
            person_2.name(namn);
            person_2.age(Newage);
            person_2.PersonNummer(pnr);
        }
        else
        {
            namn = JOptionPane.showInputDialog("Vad heter du?");
            Newage = Integer.parseInt(JOptionPane.showInputDialog("Hur gammal är du?"));
            pnr = Integer.parseInt(JOptionPane.showInputDialog("Vad är ditt personnummer"));
            person_3.name(namn);
            person_3.age(Newage);
            person_3.PersonNummer(pnr);
        }
    }
    
}

class Person{
    private static String forNamn;
    private static int age;
    private static int PersonNr;
    

    public Person()
            {
       
    }
     
     public void name(String namn)
     {
         forNamn = namn;
         
     }
     
     public void age (int Newage)
     {
         age = Newage;
         
     }
     
     public void PersonNummer (int pnr)
     {
         PersonNr = pnr;
     }                
     
     //Returnerar namnen.
     public String returnName ()
     {        
         return forNamn;
     }
     
     public int returnAge()
     {
         return age;
     }
     
     public int returnPnr()
     {
         return PersonNr;
     }
}


Kom inte på någon bra rubrik till posten, sorry.
__________________
Senast redigerad av dest 2008-02-03 kl. 17:43.
Citera
2008-02-03, 17:46
  #2
Medlem
Balthazaer-s avatar
private static int PersonNr;

Ta bort ordet "static" så löser det sig.
Citera
2008-02-03, 17:48
  #3
Medlem
dests avatar
Citat:
Ursprungligen postat av Balthazaer-
private static int PersonNr;

Ta bort ordet "static" så löser det sig.


Vad dum man är Aja..får skylla på att jag inte programmerat på länge.

Om man har static där och tilldelar den ett värde, kan man inte byta det värdet efter det?

Vad jag mena var varför alla objekt får värdet när den är static.
__________________
Senast redigerad av dest 2008-02-03 kl. 17:54.
Citera
2008-02-03, 21:15
  #4
Medlem
Tooners avatar
Om en variabel (eller metod) är static så tillhör den klassen och inte instansen.

Alltså spelar det ingen roll vilket objekt som ändrar värdet, eftersom det tillhör klassen kommer alla objekt att hämta samma värde sen.

Hade de varit public hade du inte ens behövs göra objekt för att komma åt variablerna. Person.age hade räckt.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback