Vinnaren i pepparkakshustävlingen!
2021-11-03, 09:32
  #1
Medlem
showMessageDialog fungerar inte?
showInputDialog fungerar, går det inte stapla metoder från JOptionPane klassen efter varandra eller vad är fel?

Kod:
if(e.getSource() == skapaKontoButton) {
				String val = JOptionPane.showInputDialog("Skapa konto 1-> sparkonto 2-> maxikonto 3-> lönekonto ");
				int i = Integer.parseInt(val);
				bank.skapaKonto(i);
				JOptionPane.showMessageDialog(null,"konto skapat.","Mikrobanken",JOptionPane.PLAIN_MESSAGE);
				}
Citera
2021-11-03, 09:41
  #2
Moderator
Protons avatar
Citat:
Ursprungligen postat av bosscs2
showMessageDialog fungerar inte?
showInputDialog fungerar, går det inte stapla metoder från JOptionPane klassen efter varandra eller vad är fel?

Kod:
if(e.getSource() == skapaKontoButton) {
				String val = JOptionPane.showInputDialog("Skapa konto 1-> sparkonto 2-> maxikonto 3-> lönekonto ");
				int i = Integer.parseInt(val);
				bank.skapaKonto(i);
				JOptionPane.showMessageDialog(null,"konto skapat.","Mikrobanken",JOptionPane.PLAIN_MESSAGE);
				}
VAD är fel?

Ritas den inte ut?
kompilerar inte koden? Får du fel från kompilatorn? Vilka isf?
Annat?
Citera
2021-11-03, 09:53
  #3
Medlem
showMessageDialog fönstret promptas inte, kompilatorn printar inget fel.
Citera
2021-11-03, 12:18
  #4
Moderator
Protons avatar
Citat:
Ursprungligen postat av bosscs2
showMessageDialog fönstret promptas inte, kompilatorn printar inget fel.
I sådana fall kan man ju gissa att villkoret i din if inte uppfylls.

Sätt en breakpoint med debuggern i koden, alternativt om du inte vet/kan debuggerns funktion gör en utskrift i iffen så att du ser att koden körs.
Citera
2021-11-03, 13:29
  #5
Medlem
Jag vill loopa genom en lista av objekt och addera samtliga int x -> int sum.
Felet uppstår i sum+=t.getX();

"cannot static reference to a non static etc etc?

Kod:
import java.util.ArrayList;

public class Test {
	private int x;
	int sum;
	
	Test(int x){
	this.x = x;	
	}
	
	public int getX () {
		return x;
	}

	public static void main(String [] args) {
		
		Test test1 = new Test(1);
		Test test2 = new Test(2);
		Test test3 = new Test(3);
		
		ArrayList<Test>lista= new ArrayList();
		
		lista.add(test1);
		lista.add(test2);
		lista.add(test3);
		
		for(Test t : lista) {
			sum+= t.getX();
		}
	}
}
__________________
Senast redigerad av bosscs2 2021-11-03 kl. 13:42.
Citera
2021-11-03, 15:19
  #6
Moderator
Protons avatar
Citat:
Ursprungligen postat av bosscs2
Jag vill loopa genom en lista av objekt och addera samtliga int x -> int sum.
Felet uppstår i sum+=t.getX();

"cannot static reference to a non static etc etc?

Kod:
import java.util.ArrayList;

public class Test {
	private int x;
	int sum;
	
	Test(int x){
	this.x = x;	
	}
	
	public int getX () {
		return x;
	}

	public static void main(String [] args) {
		
		Test test1 = new Test(1);
		Test test2 = new Test(2);
		Test test3 = new Test(3);
		
		ArrayList<Test>lista= new ArrayList();
		
		lista.add(test1);
		lista.add(test2);
		lista.add(test3);
		
		for(Test t : lista) {
			sum+= t.getX();
		}
	}
}
Ett nytt fel nu alltså, antar att du fixade det förra?

Felet beror på som sagt att du ifrån din staticmetod försöker anropa en ej static variabel. sum ligger som ett attribut i varje instans av test, men du försöker anropa den som om den vore en staticvariabel, alt en lokal variabel i din mainmetod.

Undvik publika attribut i dina klasser, åtkomst till attribut sker medelst *etters i java till att börja med.

Det du sen vill göra(om det nu är nån slags summering du är ute efter) är att
1. antingen deklarera en lokal variabel i main och plussa på den
2. Läta sum vara static i din klass test.

Oavsett vilket ska du inte ha nåt publikt i dina klasser om de inte är static final och används som konstanter.
Citera
2021-11-03, 17:27
  #7
Medlem
Citat:
Ursprungligen postat av Proton
Ett nytt fel nu alltså, antar att du fixade det förra?

Det berodde på att if parantesen inte var uppfylld precis som du skrev.
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