Problem med en static String (Java), tacksam för hjälp!

Permalänk
Medlem

Problem med en static String (Java), tacksam för hjälp!

Hej! Är "tvingad" till att läsa lite programmering inom min utbildning efter ett längre uppehåll och är förvirrad...

Jag har löst allt som ingår i denna uppgift, förutom en sak: Man ska kunna skriva in färg för varje rektangel och sen när egenskaperna för rektanglarna skrivs ut, ska alla rektanglarna ha samma färg som den som skapades sist.

Som koden ser ut nu får ju alla rektanglarna samma färg, men man får som användare bara ange färg en gång... Tacksam för lite hjälp!

import javax.swing.*; public class Rektangel { String indataBas = JOptionPane.showInputDialog ("Mata in bas:"); String indataHöjd = JOptionPane.showInputDialog ("Mata in höjd:"); private final int bas = Integer.parseInt(indataBas); private final int höjd = Integer.parseInt(indataHöjd); static String färg = JOptionPane.showInputDialog ("Mata in färg:"); public int visaBas(){ return bas; } public int visaHöjd(){ return höjd; } public int visaArea(){ return bas*höjd; } public static String visaFärg(){ return färg; } }

public class Rita { public static void main(String[] args) { Rektangel r1 = new Rektangel(); Rektangel r2 = new Rektangel(); Rektangel r3 = new Rektangel(); System.out.println("REKTANGEL #1: Rektangelns bas är " + r1.visaBas()+ " ,höjden är " + r1.visaHöjd()+" ,arean är " + r1.visaArea()+ " och färgen är " +r1.visaFärg()+"."); System.out.println("REKTANGEL #2: Rektangelns bas är " + r2.visaBas()+ " ,höjden är "+ r2.visaHöjd()+" ,arean är " + r2.visaArea()+ " och färgen är " +r2.visaFärg()+"."); System.out.println("REKTANGEL #3: Rektangelns bas är " + r3.visaBas()+ " ,höjden är " + r3.visaHöjd()+" ,arean är " + r3.visaArea()+ " och färgen är " +r3.visaFärg()+"."); } }

Permalänk

Problemet är att statiska anrop sker endast en gång som till exempel när du direkt initierar en statisk variabel. Låt istället bli att initiera variablerna direkt i klassen och låt klassens konstruktor sköta själva initieringen av alla variabler.

I rektangelklassen skapar du en metod med samma namn som klassen.

public Rektangel() { }

Detta är en konstruktor vilket kommer att anropas när du skapar ett nytt objekt av klassen. I stället för att initiera variablerna direkt i klassen så gör du det istället i denna metod.

Permalänk
Medlem

Tack för ditt svar!. Jag försöker med hjälp av ditt svar+boken att få till det, men jag är lite trög och förstår inte riktigt. Har du lust att visa med hjälp av min kod hur det bör se ut?

Permalänk

public class Rektangel { static int i; public Rektangel() { i = 5; } }

Permalänk
Medlem
Skrivet av Korkskruv:

public class Rektangel { static int i; public Rektangel() { i = 5; } }

Stort tack!