# Hilfe gesucht



## anfänger1542 (12. Mrz 2015)

Hallo alle miteinander,
 ich bin neu ihr und bring mir grad Java bei. Ich bräuchte eure Hilfe, denn mein Code ist bissel unübersichtlich und teile unnötig ich weiß allerdings nicht wie ich ihn "verbessern kann".
Könntet ihr mir bitte helfen? also konstruktive Vorschläge und Anregungen wie man was am besten machen könnte. Mit kleinen beispiel wie es aussehen könnte 


```
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;




public class frame extends JFrame implements ActionListener {

	private static final long serialVersionUID = 1L;
	
	private JButton info;
	private JButton nnew;
	private JButton load;
	private JButton ende;

	
	public static void main(String[] args) {
		
		frame frame = new frame("Menü");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setSize(400,400);
		frame.setLayout(null);
		frame.setVisible(true);

	}
	
	public frame(String title){
		super(title);
		
		info = new JButton("Info");
		info.setBounds(120, 0, 160, 50);
		info.addActionListener(this);
		add(info);
		
		nnew = new JButton("Neues Spiel Starten");
		nnew.setBounds(120,80,160,50);
		nnew.addActionListener(this);
		add(nnew);
		
		load = new JButton("Spiel Laden");
		load.setBounds(120,160,160,50);
		load.addActionListener(this);
		add(load);
		
		ende = new JButton("Ende");
		ende.setBounds(120,240,160,50);
		ende.addActionListener(this);
		add(ende);
		
	}


	@Override
	public void actionPerformed(ActionEvent e) {
		
		
		if(e.getSource() == info){
			Object[] options ={"OK"};
			
			JOptionPane.showOptionDialog(null,"Dies ist ein Wirdschaft Simulator aber nicht viel Grafisch.\n Deswegen bitte ich dies zu berücksichtigen.\nDieses Spiel funktioniert so: \n "
					+ "Sie kaufen eins der angebote der rechten seite und bekommen dafür eine entsprechende Summe Geld pro Secunde.\n Mit dem neu gewonnen Geld übereinen Zeitraum "
					+ "können sie neu und bessere verdienst möglichkeiten kaufen unm ihren ertrag pro sekunde zu steigern.\n Jedoch je öfters sie ein Upgrat machen des do teurer wird es.\n"
					+ "Sie können sich allerdings noch Werbungs-material kaufen das wiederum steigert ihr sekunden einkommen um eine angegebene Prozentzahl.\n"
					+ "diese können aber maximal 10 pro werbematerial gekauft werden.","Informationen/Erklärung",JOptionPane.DEFAULT_OPTION,JOptionPane.PLAIN_MESSAGE,null,options,options[0]);
		}
		else if(e.getSource() == nnew){
			fenster();
		}
		else if(e.getSource() == load){
			lade_fenster();
		}else if(e.getSource() == ende){
			System.exit(0);
		}
		
	}
	
	public static void fenster(){
		
		JFrame fenster = new JFrame("Wirdschafts-Simulator");
		fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		fenster.setSize(1800,400);
		fenster.setVisible(true);
		fenster.setResizable(false);
		fenster.setLocationRelativeTo(null); 
		fenster.add(new gui());

	}
	

	
	public static void lade_fenster(){
		JFrame lade_fenster = new JFrame("Laden");
		lade_fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		lade_fenster.setSize(500,500);
		lade_fenster.setLayout(null);
		lade_fenster.setVisible(true);
		
	}
}
```


```
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;


public class gui extends JPanel  implements ActionListener  {

	private static final long serialVersionUID = 1L;



	public void nicht_geld(){
		Object[] options ={"OK"};
		
		JOptionPane.showOptionDialog(null,"Nicht genügend Geld","Informationen/Erklärung",JOptionPane.DEFAULT_OPTION,JOptionPane.PLAIN_MESSAGE,null,options,options[0]);
	}
	
	public void zu_viel(){
		Object[] options ={"OK"};
		
		JOptionPane.showOptionDialog(null,"Maximal erreicht","Informationen/Erklärung",JOptionPane.DEFAULT_OPTION,JOptionPane.PLAIN_MESSAGE,null,options,options[0]);
	}
	
	
		
	int[] anzahl = new int[17];
	double[] kosten = new double[17];
	double[] steigern = new double[17];

	double geld 	     = 200;
	double geld_sec		 = 0;

	anzahl[0] = 0;
	anzahl[1] = 0;
	anzahl[2] = 0;
	anzahl[3] = 0;
	anzahl[4] = 0;
	anzahl[5] = 0;
	anzahl[6] = 0;
	anzahl[7] = 0;
	anzahl[8] = 0;
	anzahl[9] = 0;
	anzahl[10] = 0;
	anzahl[11] = 0;
	anzahl[12] = 0;
	anzahl[13] = 0;
	anzahl[14] = 0;
	anzahl[15] = 0;
	anzahl[16] = 0;
	
	kosten[0] = 5000;
	kosten[1] = 8000;
	kosten[2] = 15000;
	kosten[3] = 40000;
	kosten[4] = 80000;
	kosten[5] = 150000;
	kosten[6] = 190000;
	kosten[7] = 100;
	kosten[8] = 500;
	kosten[9] = 5600;
	kosten[10] = 18000;
	kosten[11] = 40000;
	kosten[12] = 240000;
	kosten[13] = 400000;
	kosten[14] = 950000;
	kosten[15] = 1200000;
	kosten[16] = 1900000;
	
	steigern[0] = 1;
	steigern[1] = 1.5;
	steigern[2] = 2;
	steigern[3] = 3;
	steigern[4] = 5;
	steigern[5] = 6.5;
	steigern[6] = 9;
	steigern[7] = 0.50;
	steigern[8] = 1;
	steigern[9] = 2.5;
	steigern[10] = 7.30;
	steigern[11] = 19.70;
	steigern[12] = 37.60;
	steigern[13] = 69.75;
	steigern[14] = 99.10;
	steigern[15] = 130;
	steigern[16] = 205.30;
	
	
	private JButton plus;
	private JButton plus1;
	private JButton plus2;
	private JButton plus3;
	private JButton plus4;
	private JButton plus5;
	private JButton plus6;
	private JButton plus7;
	private JButton plus8;
	private JButton plus9;
	
	private JButton save;
	
	private JButton plusA;
	private JButton plusA1;
	private JButton plusA2;
	private JButton plusA3;
	private JButton plusA4;
	private JButton plusA5;
	private JButton plusA6;
	
	
	public gui(){
		

		plus = new JButton("+");
		plus.setBounds(25, 300, 100, 100);
		plus.addActionListener(this);
		add(plus);
		
		plus1 = new JButton("+");
		plus1.setBounds(50, 300, 100, 100);
		plus1.addActionListener(this);
		add(plus1);
		
		plus2 = new JButton("+");
		plus2.setBounds(75, 300, 100, 100);
		plus2.addActionListener(this);
		add(plus2);
		
		plus3 = new JButton("+");
		plus3.setBounds(100,300, 100, 100);
		plus3.addActionListener(this);
		add(plus3);
		
		plus4 = new JButton("+");
		plus4.setBounds(125, 300, 100, 100);
		plus4.addActionListener(this);
		add(plus4);
		
		plus5 = new JButton("+");
		plus5.setBounds(150, 300, 100, 100);
		plus5.addActionListener(this);
		add(plus5);
		
		plus6 = new JButton("+");
		plus6.setBounds(175, 300, 100, 100);
		plus6.addActionListener(this);
		add(plus6);
		
		plus7 = new JButton("+");
		plus7.setBounds(200, 300, 100, 100);
		plus7.addActionListener(this);
		add(plus7);
		
		plus8 = new JButton("+");
		plus8.setBounds(225, 300, 100, 100);
		plus8.addActionListener(this);
		add(plus8);
		
		plus9 = new JButton("+");
		plus9.setBounds(250, 300, 100, 100);
		plus9.addActionListener(this);
		add(plus9);
		
		save = new JButton("Save");
		save.setBounds(0,1750,100,100);
		save.addActionListener(this);
		add(save);
		
		plusA = new JButton("+A");
		plusA.setBounds(25, 1500, 100, 100);
		plusA.addActionListener(this);
		add(plusA);
		
		plusA1 = new JButton("+A");
		plusA1.setBounds(50, 1500, 100, 100);
		plusA1.addActionListener(this);
		add(plusA1);
		
		plusA2 = new JButton("+A");
		plusA2.setBounds(75, 1500, 100, 100);
		plusA2.addActionListener(this);
		add(plusA2);
		
		plusA3 = new JButton("+A");
		plusA3.setBounds(100, 1500, 100, 100);
		plusA3.addActionListener(this);
		add(plusA3);
		
		plusA4 = new JButton("+A");
		plusA4.setBounds(125, 1500, 100, 100);
		plusA4.addActionListener(this);
		add(plusA4);
		
		plusA5 = new JButton("+A");
		plusA5.setBounds(150, 1500, 100, 100);
		plusA5.addActionListener(this);
		add(plusA5);
		
		plusA6 = new JButton("+A");
		plusA6.setBounds(175, 1500, 100, 100);
		plusA6.addActionListener(this);
		add(plusA6);
		
	}
	

	public void paint(Graphics g){
		
	
		super.paint(g);
		Graphics2D fs =(Graphics2D)g;
		
		fs.drawString("Geld = "+ geld, 400,50);
		fs.drawString("Geld / sec = " + geld_sec, 500,50);
		fs.drawString("Kosten: ",10,50);
		fs.drawString("pro Sec: ",160,50);
		fs.drawString("Upgrad: ",260,50);
		fs.drawString("Zigaretten " +kosten[7],10,75);
		fs.drawString(" " +steigern[7],160,75);
		fs.drawString("= Zigaretten " +anzahl[0],260,75);
		fs.drawString("Kaugummi  "+kosten[8] ,10,100);
		fs.drawString(""+steigern[8] ,160,100);
		fs.drawString("= Kaugummi  "+anzahl[1] ,260,100);
		fs.drawString("Blumen  "+kosten[9] ,10,125);
		fs.drawString(""+steigern[9] ,160,125);
		fs.drawString("= Blumen  "+anzahl[2] ,260,125);
		fs.drawString("Tante Ema  "+kosten[10] ,10,150);
		fs.drawString(""+steigern[10] ,160,150);
		fs.drawString("= Tante Ema  "+anzahl[3] ,260,150);
		fs.drawString("Kaufhaus  "+kosten[11] ,10,175);
		fs.drawString(""+steigern[11] ,160,175);
		fs.drawString("= Kaufhaus  "+anzahl[4] ,260,175);
		fs.drawString("Öl  "+kosten[12],10,200);
		fs.drawString(""+steigern[12],160,200);
		fs.drawString("= Öl  "+anzahl[5],260,200);
		fs.drawString("Erz "+kosten[13] ,10,225);
		fs.drawString(""+steigern[13] ,160,225);
		fs.drawString("= Erz "+anzahl[6] ,260,225);
		fs.drawString("Stahl  "+kosten[14] ,10,250);
		fs.drawString(""+steigern[14] ,160,250);
		fs.drawString("= Stahl  "+anzahl[7] ,260,250);
		fs.drawString("Gold  "+kosten[15] ,10,275);
		fs.drawString(""+steigern[15] ,160,275);
		fs.drawString("= Gold  "+anzahl[8] ,260,275);
		fs.drawString("Diamanten "+kosten[16],10,300);
		fs.drawString(""+steigern[16],160,300);
		fs.drawString("= Diamanten "+anzahl[9],260,300);
		
		fs.drawString("Werbung/Kosten: ", 1100,50);
		fs.drawString("Prozent steigerung: ", 1250,50);
		fs.drawString("Upgrade: ", 1400,50);
		fs.drawString("Flyer: " + kosten[0] , 1100,75);
		fs.drawString("" + steigern[0] , 1300,75);
		fs.drawString("= Flyer " + anzahl[10] , 1400,75);
		fs.drawString("Visitenkarten: " + kosten[1] , 1100,100);
		fs.drawString("" + steigern[1] , 1300,100);
		fs.drawString("= Visitenkarten " + anzahl[11] , 1400,100);
		fs.drawString("Plackart: " + kosten[2] , 1100,125);
		fs.drawString("" + steigern[2] , 1300,125);
		fs.drawString(" = Plackart " + anzahl[12] , 1400,125);
		fs.drawString("Werbebanner: " + kosten[3] , 1100,150);
		fs.drawString("" + steigern[3] , 1300,150);
		fs.drawString("= Werbebanner " + anzahl[13] , 1400,150);
		fs.drawString("Zeitung: " + kosten[4] , 1100,175);
		fs.drawString("" + steigern[4] , 1300,175);
		fs.drawString("= Zeitung " + anzahl[14] , 1400,175);
		fs.drawString("Radio: " + kosten[5], 1100,200);
		fs.drawString("" + steigern[5], 1300,200);
		fs.drawString("= Radio " + anzahl[15], 1400,200);
		fs.drawString("Fernsehen: " + kosten[6], 1100,225);
		fs.drawString("" + steigern[6], 1300,225);
		fs.drawString("= Fernsehen " + anzahl[16], 1400,225);
		
		repaint();
	}
	
	public void actionPerformed(ActionEvent e) {
		
		if(e.getSource() == plus){
			
			if(geld >=kosten[7]){
			anzahl[0] = +1;
			geld_sec = geld_sec + steigern[7];
			geld = geld - kosten[7];
			kosten[7] = kosten[7] + (kosten[7] / 4);
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == plus1){
			
			if(geld >=kosten[8]){
			anzahl[1] = +1;
			geld_sec = geld_sec + steigern[8];
			geld = geld - kosten[8];
			kosten[8] = kosten[8] + (kosten[8] / 4);
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == plus2){
			
			if(geld >=kosten[9]){
			anzahl[2] = +1;
			geld_sec = geld_sec + steigern[9];
			geld = geld - kosten[9];
			kosten[9] = kosten[9] + (kosten[9] / 4);
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == plus3){
			
			if(geld >=kosten[10]){
			anzahl[3] = +1;
			geld_sec = geld_sec + steigern[10];
			geld = geld - kosten[10];
			kosten[10] = kosten[10] + (kosten[10] / 4);
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == plus4){
			
			if(geld >=kosten[11]){
			anzahl[4] = +1;
			geld_sec = geld_sec + steigern[11];
			geld = geld - kosten[11];
			kosten[11] = kosten[11] + (kosten[11] / 4);
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == plus5){
			
			if(geld >=kosten[12]){
			anzahl[5] = +1;
			geld_sec = geld_sec + steigern[12];
			geld = geld - kosten[12];
			kosten[12] = kosten[12] + (kosten[12] / 4);
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == plus6){
			
			if(geld >=kosten[13]){
			anzahl[6] = +1;
			geld_sec = geld_sec + steigern[13];
			geld = geld - kosten[13];
			kosten[13] = kosten[13] + (kosten[13] / 4);
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == plus7){
			
			if(geld >=kosten[14]){
			anzahl[7] = +1;
			geld_sec = geld_sec + steigern[14];
			geld = geld - kosten[14];
			kosten[14] = kosten[14] + (kosten[14] / 4);
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == plus8){
			
			if(geld >=kosten[15]){
			anzahl[8]= +1;
			geld_sec = geld_sec + steigern[15];
			geld = geld - kosten[15];
			kosten[15] = kosten[15] + (kosten[15] / 4);
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == plus9){
			
			if(geld >=kosten[16]){
			anzahl[9] = +1;
			geld_sec = geld_sec + steigern[16];
			geld = geld - kosten[16];
			kosten[16] = kosten[16] + (kosten[16] / 4);
			}else{
				nicht_geld();
			}
			}else if(e.getSource() == save){
				save();
		}else if(e.getSource() == plusA){
			
			if(geld>= kosten[0]){
				anzahl[10] = +1;
				geld_sec= geld_sec + ((geld_sec/100) *steigern[0]);
				geld = geld - kosten[0];
				kosten[0] = kosten[0] + (kosten[0]  /4);
			}else if (anzahl[10] >= 10){
				zu_viel();
			}else{
				nicht_geld();
			}
			
		}else if(e.getSource() == plusA1){
			
			if(geld>= kosten[10]){
				anzahl[11] = +1;
				geld_sec= geld_sec + ((geld_sec/100) * steigern[1]);
				geld = geld - kosten[1];
				kosten[1] = kosten[1] + (kosten[1]  /4);
			}else if(anzahl[11] >= 10){
				zu_viel();
			}else{
				nicht_geld();
			}
		
		}else if(e.getSource() == plusA2){
			
			if(geld>= kosten[2]){
				anzahl[12] = +1;
				geld_sec= geld_sec + ((geld_sec/100) * steigern[2]);
				geld = geld - kosten[2];
				kosten[2] = kosten[2] + (kosten[2]  /4);
			}else if(anzahl[12] >= 10){
				zu_viel();
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == plusA3){
			
			if(geld>= kosten[3]){
				anzahl[13] = +1;
				geld_sec= geld_sec + ((geld_sec/100) * steigern[3]);
				geld = geld - kosten[3];
				kosten[3] = kosten[3] + (kosten[3]  /4);
			}else if(anzahl[13] >= 10){
				zu_viel();
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == plusA4){
			
			if(geld>= kosten[4]){
				anzahl[14] = +1;
				geld_sec= geld_sec + ((geld_sec/100) * steigern[4]);
				geld = geld - kosten[4];
				kosten[4] = kosten[4] + (kosten[4]  /4);
			}else if(anzahl[14] >= 10){
				zu_viel();
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == plusA5){
			
			if(geld>= kosten[5]){
				anzahl[15] = +1;
				geld_sec= geld_sec + ((geld_sec/100) * steigern[5]);
				geld = geld - kosten[5];
				kosten[5] = kosten[5] + (kosten[5]  /4);
			}else if(anzahl[15] >= 10){
				zu_viel();
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == plusA6){
			
			if(geld>= kosten[6]){
				anzahl[16] = +1;
				geld_sec= geld_sec + ((geld_sec/100) * steigern[6]);
				geld = geld - kosten[6];
				kosten[6] = kosten[6] + (kosten[6]  /4);
			}else if(anzahl[16] >= 10){
				zu_viel();
			}else{
				nicht_geld();
			}
		}
	}

	public void save(){
		
	}
}
```

Danke im voraus.

viele grüße,
David Krenz


----------



## BRoll (12. Mrz 2015)

Schleifen ! Arrays!


```
anzahl[0] = 0;
anzahl[1] = 0;
anzahl[2] = 0;
anzahl[3] = 0;
anzahl[4] = 0;
anzahl[5] = 0;
anzahl[6] = 0;
anzahl[7] = 0;
anzahl[8] = 0;
anzahl[9] = 0;
anzahl[10] = 0;
anzahl[11] = 0;
anzahl[12] = 0;
anzahl[13] = 0;
anzahl[14] = 0;
anzahl[15] = 0;
anzahl[16] = 0;
```

Sowas macht man nicht, sondern so:

```
for(int i=0; i<16; i++)
{
anzahl[i]=0;
}
```

Genauso deine ganzen Buttons, mach dafür auch Arrays damit du nicht immer alles
hundertmal schreiben musst.


----------



## anfänger1542 (12. Mrz 2015)

Danke für die Idee.
Und wie mach ich das mit denn Button da diese ja jeder einen anderen namen haben und eine andere Position?


----------



## Saheeda (12. Mrz 2015)

Die Variablennamen sind nur für dich als Hilfestellung gedacht. Du könntest die auch a,b,c...z nennen und es würde trotzdem funktionieren. Kann halt nachher nur keine Sau mehr lesen.

Für deine Buttons kannst du eine Liste machen und die "Zählvariable" (Iterationsvariable, hier i) benutzen:

```
for(int i = 0; i<buttonListe.size(); i++){ 
	int x = 25 * (i+1);
	buttonListe[i] = new JButton("+");
	buttonListe[i].setBounds(x, 300, 100, 100);
	buttonListe[i].addActionListener(this);
}
```


----------



## anfänger1542 (12. Mrz 2015)

Also wenn ich das richtig verstanden hab soll das so aussehen:

```
List<String> buttonListe = new ArrayList<String>();
		buttonListe.add(i,"buttonListe");
		
		
		for(int i; i<buttonListe.size(); i++){
			int x = 25 * (i+1);
			buttonListe[i] = new JButton("+");
			buttonListe[i].setBounds(x, 300, 100, 100);
			buttonListe[i].addActionListener(this);
		}
```

Alerdings Funktioniert das nicht. Er makiert mir "buttonListe_" rot. aber ohne begründung._


----------



## Saheeda (12. Mrz 2015)

Deine ArrayListe ist vom Typ String, müsste aber vom Typ JButton sein. Eine Collection (Liste, Array, whatever) kann immer nur die Objekte beinhalten, für die sie definiert wurde.

In ein Netz kannst du ja auch kein Wasser füllen, aber sehr wohl Bälle.


----------



## anfänger1542 (12. Mrz 2015)

Also ich glaub so mach das mehr sinn?:


```
List<Integer> buttonListe = new ArrayList<Integer>();
		for(int l; l < 9; l++){
		buttonListe.add(i);
		}
		
		for(int i; i<buttonListe.size(); i++){
			int x = 25 * (i+1);
			buttonListe[i] = new JButton("+");
			buttonListe[i].setBounds(x, 300, 100, 100);
			buttonListe[i].addActionListener(this);
		}
```

aber er makiert mir immer noch"buttonListe_" rot._


----------



## anfänger1542 (12. Mrz 2015)

Stimmt hab ich geändert. 
habe aber immer noch das selbe problem das er mir "buttonListe_" rot makiert.


		Java:In die Zwischenablage kopieren


List<JButton> buttonListe = new ArrayList<JButton>();
		for(int l; l < 9; l++){
		buttonListe.add(i);
		}
		
		for(int i; i<buttonListe.size(); i++){
			int x = 25 * (i+1);
			buttonListe[i] = new JButton("+");
			buttonListe[i].setBounds(x, 300, 100, 100);
			buttonListe[i].addActionListener(this);
		}

_


----------



## tffasse (12. Mrz 2015)

anfänger1542 hat gesagt.:


> Stimmt hab ich geändert.
> habe aber immer noch das selbe problem das er mir "buttonListe_" rot makiert.
> 
> 
> ...


_

Wenn du das so machen willst, dann brauchst du keine Liste sondern ein normales Array.



		Java:In die Zwischenablage kopieren


JButton[] buttonArray = new JButton[9];
		for(int i = 0; i < buttonArray.length; i++){
			int x = 25 * (i+1);
			buttonArray[i] = new JButton("+");
			buttonArray[i].setBounds(x, 300, 100, 100);
			buttonArray[i].addActionListener(this);
		}


So hast du nun ein Array mit 9 Objekten vom Typ JButton._


----------



## anfänger1542 (12. Mrz 2015)

Danke so klappt das prima 

allerdings makiert er mir  2 stellen im code rot und ich weiß nicht warum.


```
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;


public class gui extends JPanel  implements ActionListener  {

	private static final long serialVersionUID = 1L;



	public void nicht_geld(){
		Object[] options ={"OK"};
		
		JOptionPane.showOptionDialog(null,"Nicht genügend Geld","Informationen/Erklärung",JOptionPane.DEFAULT_OPTION,JOptionPane.PLAIN_MESSAGE,null,options,options[0]);
	}
	
	public void zu_viel(){
		Object[] options ={"OK"};
		
		JOptionPane.showOptionDialog(null,"Maximal erreicht","Informationen/Erklärung",JOptionPane.DEFAULT_OPTION,JOptionPane.PLAIN_MESSAGE,null,options,options[0]);
	}
	
	double geld 	     = 200;
	double geld_sec		 = 0;

	int[] anzahl = new int[17];
	
	for(int i; i <16;i++){
		anzahl[i] = 0;
	}
	

	double[] kosten = new double[17];
	
	kosten[0] = 5000;
	kosten[1] = 8000;
	kosten[2] = 15000;
	kosten[3] = 40000;
	kosten[4] = 80000;
	kosten[5] = 150000;
	kosten[6] = 190000;
	kosten[7] = 100;
	kosten[8] = 500;
	kosten[9] = 5600;
	kosten[10] = 18000;
	kosten[11] = 40000;
	kosten[12] = 240000;
	kosten[13] = 400000;
	kosten[14] = 950000;
	kosten[15] = 1200000;
	kosten[16] = 1900000;
	
	double[] steigern = new double[17];
	
	steigern[0] = 1;
	steigern[1] = 1.5;
	steigern[2] = 2;
	steigern[3] = 3;
	steigern[4] = 5;
	steigern[5] = 6.5;
	steigern[6] = 9;
	steigern[7] = 0.50;
	steigern[8] = 1;
	steigern[9] = 2.5;
	steigern[10] = 7.30;
	steigern[11] = 19.70;
	steigern[12] = 37.60;
	steigern[13] = 69.75;
	steigern[14] = 99.10;
	steigern[15] = 130;
	steigern[16] = 205.30;
	
	JButton[] buttonArray2 = new JButton[5];
	JButton[] buttonArray = new JButton[9];
	
	private JButton save;
	
	public gui(){
	
		
		for(int i; i<buttonArray.length; i++){
			int x = 25 * (i+1);
			buttonArray[i] = new JButton("+");
			buttonArray[i].setBounds(x, 300, 100, 100);
			buttonArray[i].addActionListener(this);
		}
		
		
		save = new JButton("Save");
		save.setBounds(0,1750,100,100);
		save.addActionListener(this);
		add(save);
		
		
		for(int i; i<buttonArray2.length; i++){
			int x = 25 * (i+1);
			buttonArray2[i] = new JButton("A");
			buttonArray2[i].setBounds(x, 300, 100, 100);
			buttonArray2[i].addActionListener(this);
		}
		
	}
	

	public void paint(Graphics g){
		
	
		super.paint(g);
		Graphics2D fs =(Graphics2D)g;
		
		fs.drawString("Geld = "+ geld, 400,50);
		fs.drawString("Geld / sec = " + geld_sec, 500,50);
		fs.drawString("Kosten: ",10,50);
		fs.drawString("pro Sec: ",160,50);
		fs.drawString("Upgrad: ",260,50);
		fs.drawString("Zigaretten " +kosten[7],10,75);
		fs.drawString(" " +steigern[7],160,75);
		fs.drawString("= Zigaretten " +anzahl[0],260,75);
		fs.drawString("Kaugummi  "+kosten[8] ,10,100);
		fs.drawString(""+steigern[8] ,160,100);
		fs.drawString("= Kaugummi  "+anzahl[1] ,260,100);
		fs.drawString("Blumen  "+kosten[9] ,10,125);
		fs.drawString(""+steigern[9] ,160,125);
		fs.drawString("= Blumen  "+anzahl[2] ,260,125);
		fs.drawString("Tante Ema  "+kosten[10] ,10,150);
		fs.drawString(""+steigern[10] ,160,150);
		fs.drawString("= Tante Ema  "+anzahl[3] ,260,150);
		fs.drawString("Kaufhaus  "+kosten[11] ,10,175);
		fs.drawString(""+steigern[11] ,160,175);
		fs.drawString("= Kaufhaus  "+anzahl[4] ,260,175);
		fs.drawString("Öl  "+kosten[12],10,200);
		fs.drawString(""+steigern[12],160,200);
		fs.drawString("= Öl  "+anzahl[5],260,200);
		fs.drawString("Erz "+kosten[13] ,10,225);
		fs.drawString(""+steigern[13] ,160,225);
		fs.drawString("= Erz "+anzahl[6] ,260,225);
		fs.drawString("Stahl  "+kosten[14] ,10,250);
		fs.drawString(""+steigern[14] ,160,250);
		fs.drawString("= Stahl  "+anzahl[7] ,260,250);
		fs.drawString("Gold  "+kosten[15] ,10,275);
		fs.drawString(""+steigern[15] ,160,275);
		fs.drawString("= Gold  "+anzahl[8] ,260,275);
		fs.drawString("Diamanten "+kosten[16],10,300);
		fs.drawString(""+steigern[16],160,300);
		fs.drawString("= Diamanten "+anzahl[9],260,300);
		
		fs.drawString("Werbung/Kosten: ", 1100,50);
		fs.drawString("Prozent steigerung: ", 1250,50);
		fs.drawString("Upgrade: ", 1400,50);
		fs.drawString("Flyer: " + kosten[0] , 1100,75);
		fs.drawString("" + steigern[0] , 1300,75);
		fs.drawString("= Flyer " + anzahl[10] , 1400,75);
		fs.drawString("Visitenkarten: " + kosten[1] , 1100,100);
		fs.drawString("" + steigern[1] , 1300,100);
		fs.drawString("= Visitenkarten " + anzahl[11] , 1400,100);
		fs.drawString("Plackart: " + kosten[2] , 1100,125);
		fs.drawString("" + steigern[2] , 1300,125);
		fs.drawString(" = Plackart " + anzahl[12] , 1400,125);
		fs.drawString("Werbebanner: " + kosten[3] , 1100,150);
		fs.drawString("" + steigern[3] , 1300,150);
		fs.drawString("= Werbebanner " + anzahl[13] , 1400,150);
		fs.drawString("Zeitung: " + kosten[4] , 1100,175);
		fs.drawString("" + steigern[4] , 1300,175);
		fs.drawString("= Zeitung " + anzahl[14] , 1400,175);
		fs.drawString("Radio: " + kosten[5], 1100,200);
		fs.drawString("" + steigern[5], 1300,200);
		fs.drawString("= Radio " + anzahl[15], 1400,200);
		fs.drawString("Fernsehen: " + kosten[6], 1100,225);
		fs.drawString("" + steigern[6], 1300,225);
		fs.drawString("= Fernsehen " + anzahl[16], 1400,225);
		
		repaint();
	}
	
	public void actionPerformed(ActionEvent e) {
		
		if(e.getSource() ==buttonArray[0]){
			
			if(geld >=kosten[7]){
			anzahl[0] = +1;
			geld_sec = geld_sec + steigern[1];
			geld = geld - kosten[7];
			kosten[7] = kosten[7] + (kosten[7] / 4);
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == buttonArray[1]){
			
			if(geld >=kosten[8]){
			anzahl[1] = +1;
			geld_sec = geld_sec + steigern[8];
			geld = geld - kosten[8];
			kosten[8] = kosten[8] + (kosten[8] / 4);
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == buttonArray[2]){
			
			if(geld >=kosten[9]){
			anzahl[2] = +1;
			geld_sec = geld_sec + steigern[9];
			geld = geld - kosten[9];
			kosten[9] = kosten[9] + (kosten[9] / 4);
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == buttonArray[3]){
			
			if(geld >=kosten[10]){
			anzahl[3] = +1;
			geld_sec = geld_sec + steigern[10];
			geld = geld - kosten[10];
			kosten[10] = kosten[10] + (kosten[10] / 4);
			}else{
				nicht_geld();
			}
		}else if(e.getSource() ==buttonArray[4]){
			
			if(geld >=kosten[11]){
			anzahl[4] = +1;
			geld_sec = geld_sec + steigern[11];
			geld = geld - kosten[11];
			kosten[11] = kosten[11] + (kosten[11] / 4);
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == buttonArray[5]){
			
			if(geld >=kosten[12]){
			anzahl[5] = +1;
			geld_sec = geld_sec + steigern[12];
			geld = geld - kosten[12];
			kosten[12] = kosten[12] + (kosten[12] / 4);
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == buttonArray[6]){
			
			if(geld >=kosten[13]){
			anzahl[6] = +1;
			geld_sec = geld_sec + steigern[13];
			geld = geld - kosten[13];
			kosten[13] = kosten[13] + (kosten[13] / 4);
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == buttonArray[7]){
			
			if(geld >=kosten[14]){
			anzahl[7] = +1;
			geld_sec = geld_sec + steigern[14];
			geld = geld - kosten[14];
			kosten[14] = kosten[14] + (kosten[14] / 4);
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == buttonArray[8]){
			
			if(geld >=kosten[15]){
			anzahl[8]= +1;
			geld_sec = geld_sec + steigern[15];
			geld = geld - kosten[15];
			kosten[15] = kosten[15] + (kosten[15] / 4);
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == buttonArray[9]){
			
			if(geld >=kosten[16]){
			anzahl[9] = +1;
			geld_sec = geld_sec + steigern[16];
			geld = geld - kosten[16];
			kosten[16] = kosten[16] + (kosten[16] / 4);
			}else{
				nicht_geld();
			}
			}else if(e.getSource() == save){
				save();
		}else if(e.getSource() == buttonArray2[i]){
			
			if(geld>= kosten[0]){
				anzahl[10] = +1;
				geld_sec= geld_sec + ((geld_sec/100) *steigern[0]);
				geld = geld - kosten[0];
				kosten[0] = kosten[0] + (kosten[0]  /4);
			}else if (anzahl[10] >= 10){
				zu_viel();
			}else{
				nicht_geld();
			}
			
		}else if(e.getSource() == buttonArray2[0]){
			
			if(geld>= kosten[10]){
				anzahl[11] = +1;
				geld_sec= geld_sec + ((geld_sec/100) * steigern[1]);
				geld = geld - kosten[1];
				kosten[1] = kosten[1] + (kosten[1]  /4);
			}else if(anzahl[11] >= 10){
				zu_viel();
			}else{
				nicht_geld();
			}
		
		}else if(e.getSource() == buttonArray2[1]){
			
			if(geld>= kosten[2]){
				anzahl[12] = +1;
				geld_sec= geld_sec + ((geld_sec/100) * steigern[2]);
				geld = geld - kosten[2];
				kosten[2] = kosten[2] + (kosten[2]  /4);
			}else if(anzahl[12] >= 10){
				zu_viel();
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == buttonArray2[2]){
			
			if(geld>= kosten[3]){
				anzahl[13] = +1;
				geld_sec= geld_sec + ((geld_sec/100) * steigern[3]);
				geld = geld - kosten[3];
				kosten[3] = kosten[3] + (kosten[3]  /4);
			}else if(anzahl[13] >= 10){
				zu_viel();
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == buttonArray2[3]){
			
			if(geld>= kosten[4]){
				anzahl[14] = +1;
				geld_sec= geld_sec + ((geld_sec/100) * steigern[4]);
				geld = geld - kosten[4];
				kosten[4] = kosten[4] + (kosten[4]  /4);
			}else if(anzahl[14] >= 10){
				zu_viel();
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == buttonArray2[4]){
			
			if(geld>= kosten[5]){
				anzahl[15] = +1;
				geld_sec= geld_sec + ((geld_sec/100) * steigern[5]);
				geld = geld - kosten[5];
				kosten[5] = kosten[5] + (kosten[5]  /4);
			}else if(anzahl[15] >= 10){
				zu_viel();
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == buttonArray2[5]){
			
			if(geld>= kosten[6]){
				anzahl[16] = +1;
				geld_sec= geld_sec + ((geld_sec/100) * steigern[6]);
				geld = geld - kosten[6];
				kosten[6] = kosten[6] + (kosten[6]  /4);
			}else if(anzahl[16] >= 10){
				zu_viel();
			}else{
				nicht_geld();
			}
		}
	}

	public void save(){
		
	}
}
```

und zwar Zeile 36 das ";" und Zeile 86 ";".
und ich komm nicht drauf warum?


----------



## Saheeda (12. Mrz 2015)

Sorry, ich hab die Sprachen durcheinander gebracht.
In einigen anderen kann ich auch bei Listen über die eckigen Klammern auf einen bestimmten Index zugreifen, in Java geht das bei Listen über liste.get(index);


----------



## anfänger1542 (12. Mrz 2015)

Kein Problem ich hab ja jetzt die Lösung.

allerdings markiert er mir immer noch 2 ";" im Text rot und ich weiß nicht warum?


----------



## tffasse (12. Mrz 2015)

anfänger1542 hat gesagt.:


> Danke so klappt das prima
> 
> allerdings makiert er mir  2 stellen im code rot und ich weiß nicht warum.
> 
> ...



Blöde Frage: Sichergestellt, dass du gespeichert hast? 

Welche IDE oder Editor benutzt du? Die sollte dir eigentlich auch, zumindest grob, sagen, was da nun falsch ist.

Du hast nämlich noch einen Fehler in der for-Schleife in Zeile 38. Du musst die Variable i natürlich noch initialisieren.

```
for(int i = 0; i < 16; i++){
    anzahl[i] = 0;
}
```

Behebe das erst einmal und gucke was dann passiert.
Noch ein Tipp: In der Namenskonvention von Java wird vorgeschrieben, Klassennamen Groß zu schreiben. Sprich statt 'gui' solltest du 'Gui' verwenden.


----------



## anfänger1542 (12. Mrz 2015)

Ja gespeichert ist alles.

irgendwas stimmt mit der for schleife nicht. das i ist initialisiert.
ich nutze Eclipse.
der Compiler sagt Syntax Error. 

Danke ich habe die Klassennamen geändert.


----------



## anfänger1542 (12. Mrz 2015)

also ich krieg 2 Fehler Meldungen:

1. Syntax Error on token ";",{ expected after this token.
2. Synatk Eroor, insert "}" to complete Block.

also ich weiß was mein Compiler mir damit sagen will allerdings finde ich denn Fehler nicht.


----------



## tffasse (12. Mrz 2015)

Kannst du nochmal deinen aktuellen Code posten? Wo du die Sachen schon angepasst hast und sagen, welche Zeile du nun einen Fehler hast?


----------



## anfänger1542 (12. Mrz 2015)

```
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class Gui extends JPanel  implements ActionListener{

	private static final long serialVersionUID = 1L;

	int[] anzahl = new int[16];
	
	for(int i = 0; i <16; i++){
		anzahl[i] = 0;
	}
	
	double geld 	     = 200;
	double geld_sec		 = 0;

	
	double[] kosten = new double[17];
	
	kosten[0]  = 5000;
	kosten[1]  = 8000;
	kosten[2]  = 15000;
	kosten[3]  = 40000;
	kosten[4]  = 80000;
	kosten[5]  = 150000;
	kosten[6]  = 190000;
	kosten[7]  = 100;
	kosten[8]  = 500;
	kosten[9]  = 5600;
	kosten[10] = 18000;
	kosten[11] = 40000;
	kosten[12] = 240000;
	kosten[13] = 400000;
	kosten[14] = 950000;
	kosten[15] = 1200000;
	kosten[16] = 1900000;
	
	double[] steigern = new double[17];
	
	steigern[0]  = 1;
	steigern[1]  = 1.5;
	steigern[2]  = 2;
	steigern[3]  = 3;
	steigern[4]  = 5;
	steigern[5]  = 6.5;
	steigern[6]  = 9;
	steigern[7]  = 0.50;
	steigern[8]  = 1;
	steigern[9]  = 2.5;
	steigern[10] = 7.30;
	steigern[11] = 19.70;
	steigern[12] = 37.60;
	steigern[13] = 69.75;
	steigern[14] = 99.10;
	steigern[15] = 130;
	steigern[16] = 205.30;

	private JButton save;
	
	JButton[] buttonArray  = new JButton[9];
	JButton[] buttonArray2 = new JButton[5];
	

	public Gui(){
	
		
		for(int i; i<buttonArray.length; i++){
			int x = 25 * (i+1);
			buttonArray[i] = new JButton("+");
			buttonArray[i].setBounds(x, 300, 100, 100);
			buttonArray[i].addActionListener(this);
		}
			
		save = new JButton("Save");
		save.setBounds(0,1750,100,100);
		save.addActionListener(this);
		add(save);
		
		for(int i; i<buttonArray2.length; i++){
			int x = 25 * (i+1);
			buttonArray2[i] = new JButton("A");
			buttonArray2[i].setBounds(x, 300, 100, 100);
			buttonArray2[i].addActionListener(this);
		}
		
	}
	
	public void paint(Graphics g){
		
		super.paint(g);
		Graphics2D fs =(Graphics2D)g;
		
		fs.drawString("Geld = "+ geld, 400,50);
		fs.drawString("Geld / sec = " + geld_sec, 500,50);
		
		fs.drawString("Kosten: ",10,50);
		fs.drawString("pro Sec: ",160,50);
		fs.drawString("Upgrad: ",260,50);
		
		fs.drawString("Zigaretten " +kosten[7],10,75);
		fs.drawString(" " +steigern[7],160,75);
		fs.drawString("= Zigaretten " +anzahl[0],260,75);
		fs.drawString("Kaugummi  "+kosten[8] ,10,100);
		fs.drawString(""+steigern[8],160,100);
		fs.drawString("= Kaugummi  "+anzahl[1],260,100);
		fs.drawString("Blumen  "+kosten[9],10,125);
		fs.drawString(""+steigern[9],160,125);
		fs.drawString("= Blumen  "+anzahl[2],260,125);
		fs.drawString("Tante Ema  "+kosten[10],10,150);
		fs.drawString(""+steigern[10],160,150);
		fs.drawString("= Tante Ema  "+anzahl[3],260,150);
		fs.drawString("Kaufhaus  "+kosten[11],10,175);
		fs.drawString(""+steigern[11],160,175);
		fs.drawString("= Kaufhaus  "+anzahl[4],260,175);
		fs.drawString("Öl  "+kosten[12],10,200);
		fs.drawString(""+steigern[12],160,200);
		fs.drawString("= Öl  "+anzahl[5],260,200);
		fs.drawString("Erz "+kosten[13],10,225);
		fs.drawString(""+steigern[13],160,225);
		fs.drawString("= Erz "+anzahl[6],260,225);
		fs.drawString("Stahl  "+kosten[14],10,250);
		fs.drawString(""+steigern[14],160,250);
		fs.drawString("= Stahl  "+anzahl[7],260,250);
		fs.drawString("Gold  "+kosten[15],10,275);
		fs.drawString(""+steigern[15],160,275);
		fs.drawString("= Gold  "+anzahl[8],260,275);
		fs.drawString("Diamanten "+kosten[16],10,300);
		fs.drawString(""+steigern[16],160,300);
		fs.drawString("= Diamanten "+anzahl[9],260,300);
		
		fs.drawString("Werbung/Kosten: ", 1100,50);
		fs.drawString("Prozent steigerung: ", 1250,50);
		fs.drawString("Upgrade: ", 1400,50);
		
		fs.drawString("Flyer: " + kosten[0],1100,75);
		fs.drawString("" + steigern[0],1300,75);
		fs.drawString("= Flyer " + anzahl[10],1400,75);
		fs.drawString("Visitenkarten: " + kosten[1],1100,100);
		fs.drawString("" + steigern[1] ,1300,100);
		fs.drawString("= Visitenkarten " + anzahl[11],1400,100);
		fs.drawString("Plackart: " + kosten[2],1100,125);
		fs.drawString("" + steigern[2],1300,125);
		fs.drawString(" = Plackart " + anzahl[12],1400,125);
		fs.drawString("Werbebanner: " + kosten[3],1100,150);
		fs.drawString("" + steigern[3],1300,150);
		fs.drawString("= Werbebanner " + anzahl[13],1400,150);
		fs.drawString("Zeitung: " + kosten[4],1100,175);
		fs.drawString("" + steigern[4],1300,175);
		fs.drawString("= Zeitung " + anzahl[14],1400,175);
		fs.drawString("Radio: " + kosten[5],1100,200);
		fs.drawString("" + steigern[5],1300,200);
		fs.drawString("= Radio " + anzahl[15],1400,200);
		fs.drawString("Fernsehen: " + kosten[6],1100,225);
		fs.drawString("" + steigern[6],1300,225);
		fs.drawString("= Fernsehen " +anzahl[16],1400,225);
		
		repaint();
	}
	
	public void actionPerformed(ActionEvent e) {
		
		if(e.getSource() ==buttonArray[0]){
			
			if(geld >=kosten[7]){
			anzahl[0] = +1;
			geld_sec = geld_sec + steigern[1];
			geld = geld - kosten[7];
			kosten[7] = kosten[7] + (kosten[7] / 4);
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == buttonArray[1]){
			
			if(geld >=kosten[8]){
			anzahl[1] = +1;
			geld_sec = geld_sec + steigern[8];
			geld = geld - kosten[8];
			kosten[8] = kosten[8] + (kosten[8] / 4);
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == buttonArray[2]){
			
			if(geld >=kosten[9]){
			anzahl[2] = +1;
			geld_sec = geld_sec + steigern[9];
			geld = geld - kosten[9];
			kosten[9] = kosten[9] + (kosten[9] / 4);
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == buttonArray[3]){
			
			if(geld >=kosten[10]){
			anzahl[3]  = +1;
			geld_sec = geld_sec + steigern[10];
			geld = geld - kosten[10];
			kosten[10] = kosten[10] + (kosten[10] / 4);
			}else{
				nicht_geld();
			}
		}else if(e.getSource() ==buttonArray[4]){
			
			if(geld >=kosten[11]){
			anzahl[4]  = +1 ;
			geld_sec = geld_sec + steigern[11];
			geld = geld - kosten[11];
			kosten[11] = kosten[11] + (kosten[11] / 4);
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == buttonArray[5]){
			
			if(geld >=kosten[12]){
			anzahl[5] = +1;
			geld_sec = geld_sec + steigern[12];
			geld = geld - kosten[12];
			kosten[12] = kosten[12] + (kosten[12] / 4);
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == buttonArray[6]){
			
			if(geld >=kosten[13]){
			anzahl[6] = +1;
			geld_sec = geld_sec + steigern[13];
			geld = geld - kosten[13];
			kosten[13] = kosten[13] + (kosten[13] / 4);
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == buttonArray[7]){
			
			if(geld >=kosten[14]){
			anzahl[7] = +1;
			geld_sec = geld_sec + steigern[14];
			geld = geld - kosten[14];
			kosten[14] = kosten[14] + (kosten[14] / 4);
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == buttonArray[8]){
			
			if(geld >=kosten[15]){
			anzahl[8] = +1;
			geld_sec = geld_sec + steigern[15];
			geld = geld - kosten[15];
			kosten[15] = kosten[15] + (kosten[15] / 4);
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == buttonArray[9]){
			
			if(geld >=kosten[16]){
			anzahl[9] = +1;
			geld_sec = geld_sec + steigern[16];
			geld = geld - kosten[16];
			kosten[16] = kosten[16] + (kosten[16] / 4);
			}else{
				nicht_geld();
			}
			}else if(e.getSource() == save){
				save();
		}else if(e.getSource() == buttonArray2[i]){
			
			if(geld>= kosten[0]){
				anzahl[10] = +1;
				geld_sec= geld_sec + ((geld_sec/100) *steigern[0]);
				geld = geld - kosten[0];
				kosten[0] = kosten[0] + (kosten[0]  /4);
			}else if (anzahl[10] >= 10){
				zu_viel();
			}else{
				nicht_geld();
			}
			
		}else if(e.getSource() == buttonArray2[0]){
			
			if(geld>= kosten[10]){
				anzahl[11] = +1;
				geld_sec= geld_sec + ((geld_sec/100) * steigern[1]);
				geld = geld - kosten[1];
				kosten[1] = kosten[1] + (kosten[1]  /4);
			}else if(anzahl[11] >= 10){
				zu_viel();
			}else{
				nicht_geld();
			}
		
		}else if(e.getSource() == buttonArray2[1]){
			
			if(geld>= kosten[2]){
				anzahl[12] = +1;
				geld_sec= geld_sec + ((geld_sec/100) * steigern[2]);
				geld = geld - kosten[2];
				kosten[2] = kosten[2] + (kosten[2]  /4);
			}else if(anzahl[12] >= 10){
				zu_viel();
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == buttonArray2[2]){
			
			if(geld>= kosten[3]){
				anzahl[13] = +1;
				geld_sec= geld_sec + ((geld_sec/100) * steigern[3]);
				geld = geld - kosten[3];
				kosten[3] = kosten[3] + (kosten[3]  /4);
			}else if(anzahl[13] >= 10){
				zu_viel();
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == buttonArray2[3]){
			
			if(geld>= kosten[4]){
				anzahl[14] = +1;
				geld_sec= geld_sec + ((geld_sec/100) * steigern[4]);
				geld = geld - kosten[4];
				kosten[4] = kosten[4] + (kosten[4]  /4);
			}else if(anzahl[14] >= 10){
				zu_viel();
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == buttonArray2[4]){
			
			if(geld>= kosten[5]){
				anzahl[15] = +1;
				geld_sec= geld_sec + ((geld_sec/100) * steigern[5]);
				geld = geld - kosten[5];
				kosten[5] = kosten[5] + (kosten[5]  /4);
			}else if(anzahl[15] >= 10){
				zu_viel();
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == buttonArray2[5]){
			
			if(geld>= kosten[6]){
				anzahl[16] = +1;
				geld_sec= geld_sec + ((geld_sec/100) * steigern[6]);
				geld = geld - kosten[6];
				kosten[6] = kosten[6] + (kosten[6]  /4);
			}else if(anzahl[16] >= 10){
				zu_viel();
			}else{
				nicht_geld();
			}
		}
	}

	public void save(){
		
	}
	
	public void nicht_geld(){
		
		Object[] options ={"OK"};
		
		JOptionPane.showOptionDialog(null,"Nicht genügend Geld","Informationen/Erklärung",JOptionPane.DEFAULT_OPTION,JOptionPane.PLAIN_MESSAGE,null,options,options[0]);
	}
	
	public void zu_viel(){
		
		Object[] options ={"OK"};
		
		JOptionPane.showOptionDialog(null,"Maximum Ereicht","Informationen/Erklärung",JOptionPane.DEFAULT_OPTION,JOptionPane.PLAIN_MESSAGE,null,options,options[0]);
	}
}
```

Zeile 17 hab ich Fehler 1.
Zeile 70 Fehler 2.


----------



## VfL_Freak (12. Mrz 2015)

Moin,

:meld: das dürfte wohl so ziemlich alle for-Schleifen betreffen:

```
for(int i; i<buttonListe.size(); i++){
```
Wie groß ist denn hier wohl Dein Startwert 'i'  ??? :wink:
Stichwort: Initialisierung !!

Gruß Klaus


----------



## anfänger1542 (12. Mrz 2015)

Peinlicher Fehler  

hab ich behoben.
geändert hat es trotzdem nix.


----------



## VfL_Freak (12. Mrz 2015)

WAS ändert sich nicht ??
Bekommst im Schleifenkopf immer noch Syntaxfehler ??

Post doch bitte einfach die komplette Fehlermeldung/den Stacktrace und dazu den AKTUELLEN Code!
Quiz machen wir nämlich erst NACH Feierabend ;-)

Gruß Klaus

BTW: wirklich ALLE falschen Schleifen korrigiert ???


----------



## anfänger1542 (12. Mrz 2015)

Die Fehler.
Ich hab raus gefunden das es nicht an der schleife liegt, denn wenn ich die schleife samt dem "int[] anzahl = new int[16];" verschiebe springt die Fehlermeldung zum nächsten Array.

Die Fehlerausgabe krieg ich nur am rand mittels einem roten Kreuz und wen ich mit dem Course darauf gehe gibt er mir die Fehler Meldung aus.

du kannst ja meinen Code mal in Eclipse kopieren vllt ist es dann verständlicher .


----------



## VfL_Freak (12. Mrz 2015)

Moin,



anfänger1542 hat gesagt.:


> Ich hab raus gefunden das es nicht an der schleife liegt, denn wenn ich die schleife samt dem "int[] anzahl = new int[16];" verschiebe springt die Fehlermeldung zum nächsten Array.


Bitte was?? :bahnhof:
Was hast Du wohin verschoben?
Poste aktuellen Code .........



anfänger1542 hat gesagt.:


> Die Fehlerausgabe krieg ich nur am rand mittels einem roten Kreuz und wen ich mit dem Course darauf gehe gibt er mir die Fehler Meldung aus.


Welche denn genau?
Poste ggf. einen enstprechenden ScreenShot .........



anfänger1542 hat gesagt.:


> du kannst ja meinen Code mal in Eclipse kopieren vllt ist es dann verständlicher


Dazu habe ich nun wirklich keine Zeit!
Wir machen das hier ja nun nicht (haupt-)beruflich, sondern nebenbei auf der Arbeit!!

Gruß Klaus


----------



## anfänger1542 (12. Mrz 2015)

```
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class Gui extends JPanel  implements ActionListener{

	private static final long serialVersionUID = 1L;

	int[] anzahl = new int[16];    // hier gibts eine Fehlerausgabe am rand. Das ";" wird rot unterstrichen
	
	for(int i = 0; i <16; i++){
		anzahl[i] = 0;
	}
	
	double geld 	     = 200;
	double geld_sec		 = 0;
	
	double[] kosten = new double[17];
	
	kosten[0]  = 5000;
	kosten[1]  = 8000;
	kosten[2]  = 15000;
	kosten[3]  = 40000;
	kosten[4]  = 80000;
	kosten[5]  = 150000;
	kosten[6]  = 190000;
	kosten[7]  = 100;
	kosten[8]  = 500;
	kosten[9]  = 5600;
	kosten[10] = 18000;
	kosten[11] = 40000;
	kosten[12] = 240000;
	kosten[13] = 400000;
	kosten[14] = 950000;
	kosten[15] = 1200000;
	kosten[16] = 1900000;
	
	double[] steigern = new double[17];
	
	steigern[0]  = 1;
	steigern[1]  = 1.5;
	steigern[2]  = 2;
	steigern[3]  = 3;
	steigern[4]  = 5;
	steigern[5]  = 6.5;
	steigern[6]  = 9;
	steigern[7]  = 0.50;
	steigern[8]  = 1;
	steigern[9]  = 2.5;
	steigern[10] = 7.30;
	steigern[11] = 19.70;
	steigern[12] = 37.60;
	steigern[13] = 69.75;
	steigern[14] = 99.10;
	steigern[15] = 130;
	steigern[16] = 205.30;

	private JButton save;
	
	JButton[] buttonArray  = new JButton[9];
	JButton[] buttonArray2 = new JButton[5]; //hier gibts die nächste Fehlerausgabe. Das ";" wird rot unterstrichen
	

	public Gui(){
	
		
		for(int i = 0; i<buttonArray.length; i++){
			int x = 25 * (i+1);
			buttonArray[i] = new JButton("+");
			buttonArray[i].setBounds(x, 300, 100, 100);
			buttonArray[i].addActionListener(this);
		}
			
		save = new JButton("Save");
		save.setBounds(0,1750,100,100);
		save.addActionListener(this);
		add(save);
		
		for(int i = 0; i<buttonArray2.length; i++){
			int x = 25 * (i+1);
			buttonArray2[i] = new JButton("A");
			buttonArray2[i].setBounds(x, 300, 100, 100);
			buttonArray2[i].addActionListener(this);
		}
		
	}
	
	public void paint(Graphics g){
		
		super.paint(g);
		Graphics2D fs =(Graphics2D)g;
		
		fs.drawString("Geld = "+ geld, 400,50);
		fs.drawString("Geld / sec = " + geld_sec, 500,50);
		
		fs.drawString("Kosten: ",10,50);
		fs.drawString("pro Sec: ",160,50);
		fs.drawString("Upgrad: ",260,50);
		
		fs.drawString("Zigaretten " +kosten[7],10,75);
		fs.drawString(" " +steigern[7],160,75);
		fs.drawString("= Zigaretten " +anzahl[0],260,75);
		fs.drawString("Kaugummi  "+kosten[8] ,10,100);
		fs.drawString(""+steigern[8],160,100);
		fs.drawString("= Kaugummi  "+anzahl[1],260,100);
		fs.drawString("Blumen  "+kosten[9],10,125);
		fs.drawString(""+steigern[9],160,125);
		fs.drawString("= Blumen  "+anzahl[2],260,125);
		fs.drawString("Tante Ema  "+kosten[10],10,150);
		fs.drawString(""+steigern[10],160,150);
		fs.drawString("= Tante Ema  "+anzahl[3],260,150);
		fs.drawString("Kaufhaus  "+kosten[11],10,175);
		fs.drawString(""+steigern[11],160,175);
		fs.drawString("= Kaufhaus  "+anzahl[4],260,175);
		fs.drawString("Öl  "+kosten[12],10,200);
		fs.drawString(""+steigern[12],160,200);
		fs.drawString("= Öl  "+anzahl[5],260,200);
		fs.drawString("Erz "+kosten[13],10,225);
		fs.drawString(""+steigern[13],160,225);
		fs.drawString("= Erz "+anzahl[6],260,225);
		fs.drawString("Stahl  "+kosten[14],10,250);
		fs.drawString(""+steigern[14],160,250);
		fs.drawString("= Stahl  "+anzahl[7],260,250);
		fs.drawString("Gold  "+kosten[15],10,275);
		fs.drawString(""+steigern[15],160,275);
		fs.drawString("= Gold  "+anzahl[8],260,275);
		fs.drawString("Diamanten "+kosten[16],10,300);
		fs.drawString(""+steigern[16],160,300);
		fs.drawString("= Diamanten "+anzahl[9],260,300);
		
		fs.drawString("Werbung/Kosten: ", 1100,50);
		fs.drawString("Prozent steigerung: ", 1250,50);
		fs.drawString("Upgrade: ", 1400,50);
		
		fs.drawString("Flyer: " + kosten[0],1100,75);
		fs.drawString("" + steigern[0],1300,75);
		fs.drawString("= Flyer " + anzahl[10],1400,75);
		fs.drawString("Visitenkarten: " + kosten[1],1100,100);
		fs.drawString("" + steigern[1] ,1300,100);
		fs.drawString("= Visitenkarten " + anzahl[11],1400,100);
		fs.drawString("Plackart: " + kosten[2],1100,125);
		fs.drawString("" + steigern[2],1300,125);
		fs.drawString(" = Plackart " + anzahl[12],1400,125);
		fs.drawString("Werbebanner: " + kosten[3],1100,150);
		fs.drawString("" + steigern[3],1300,150);
		fs.drawString("= Werbebanner " + anzahl[13],1400,150);
		fs.drawString("Zeitung: " + kosten[4],1100,175);
		fs.drawString("" + steigern[4],1300,175);
		fs.drawString("= Zeitung " + anzahl[14],1400,175);
		fs.drawString("Radio: " + kosten[5],1100,200);
		fs.drawString("" + steigern[5],1300,200);
		fs.drawString("= Radio " + anzahl[15],1400,200);
		fs.drawString("Fernsehen: " + kosten[6],1100,225);
		fs.drawString("" + steigern[6],1300,225);
		fs.drawString("= Fernsehen " +anzahl[16],1400,225);
		
		repaint();
	}
	
	public void actionPerformed(ActionEvent e) {
		
		if(e.getSource() ==buttonArray[0]){
			
			if(geld >=kosten[7]){
			anzahl[0] = +1;
			geld_sec = geld_sec + steigern[1];
			geld = geld - kosten[7];
			kosten[7] = kosten[7] + (kosten[7] / 4);
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == buttonArray[1]){
			
			if(geld >=kosten[8]){
			anzahl[1] = +1;
			geld_sec = geld_sec + steigern[8];
			geld = geld - kosten[8];
			kosten[8] = kosten[8] + (kosten[8] / 4);
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == buttonArray[2]){
			
			if(geld >=kosten[9]){
			anzahl[2] = +1;
			geld_sec = geld_sec + steigern[9];
			geld = geld - kosten[9];
			kosten[9] = kosten[9] + (kosten[9] / 4);
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == buttonArray[3]){
			
			if(geld >=kosten[10]){
			anzahl[3]  = +1;
			geld_sec = geld_sec + steigern[10];
			geld = geld - kosten[10];
			kosten[10] = kosten[10] + (kosten[10] / 4);
			}else{
				nicht_geld();
			}
		}else if(e.getSource() ==buttonArray[4]){
			
			if(geld >=kosten[11]){
			anzahl[4]  = +1 ;
			geld_sec = geld_sec + steigern[11];
			geld = geld - kosten[11];
			kosten[11] = kosten[11] + (kosten[11] / 4);
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == buttonArray[5]){
			
			if(geld >=kosten[12]){
			anzahl[5] = +1;
			geld_sec = geld_sec + steigern[12];
			geld = geld - kosten[12];
			kosten[12] = kosten[12] + (kosten[12] / 4);
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == buttonArray[6]){
			
			if(geld >=kosten[13]){
			anzahl[6] = +1;
			geld_sec = geld_sec + steigern[13];
			geld = geld - kosten[13];
			kosten[13] = kosten[13] + (kosten[13] / 4);
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == buttonArray[7]){
			
			if(geld >=kosten[14]){
			anzahl[7] = +1;
			geld_sec = geld_sec + steigern[14];
			geld = geld - kosten[14];
			kosten[14] = kosten[14] + (kosten[14] / 4);
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == buttonArray[8]){
			
			if(geld >=kosten[15]){
			anzahl[8] = +1;
			geld_sec = geld_sec + steigern[15];
			geld = geld - kosten[15];
			kosten[15] = kosten[15] + (kosten[15] / 4);
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == buttonArray[9]){
			
			if(geld >=kosten[16]){
			anzahl[9] = +1;
			geld_sec = geld_sec + steigern[16];
			geld = geld - kosten[16];
			kosten[16] = kosten[16] + (kosten[16] / 4);
			}else{
				nicht_geld();
			}
			}else if(e.getSource() == save){
				save();
		}else if(e.getSource() == buttonArray2[i]){
			
			if(geld>= kosten[0]){
				anzahl[10] = +1;
				geld_sec= geld_sec + ((geld_sec/100) *steigern[0]);
				geld = geld - kosten[0];
				kosten[0] = kosten[0] + (kosten[0]  /4);
			}else if (anzahl[10] >= 10){
				zu_viel();
			}else{
				nicht_geld();
			}
			
		}else if(e.getSource() == buttonArray2[0]){
			
			if(geld>= kosten[10]){
				anzahl[11] = +1;
				geld_sec= geld_sec + ((geld_sec/100) * steigern[1]);
				geld = geld - kosten[1];
				kosten[1] = kosten[1] + (kosten[1]  /4);
			}else if(anzahl[11] >= 10){
				zu_viel();
			}else{
				nicht_geld();
			}
		
		}else if(e.getSource() == buttonArray2[1]){
			
			if(geld>= kosten[2]){
				anzahl[12] = +1;
				geld_sec= geld_sec + ((geld_sec/100) * steigern[2]);
				geld = geld - kosten[2];
				kosten[2] = kosten[2] + (kosten[2]  /4);
			}else if(anzahl[12] >= 10){
				zu_viel();
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == buttonArray2[2]){
			
			if(geld>= kosten[3]){
				anzahl[13] = +1;
				geld_sec= geld_sec + ((geld_sec/100) * steigern[3]);
				geld = geld - kosten[3];
				kosten[3] = kosten[3] + (kosten[3]  /4);
			}else if(anzahl[13] >= 10){
				zu_viel();
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == buttonArray2[3]){
			
			if(geld>= kosten[4]){
				anzahl[14] = +1;
				geld_sec= geld_sec + ((geld_sec/100) * steigern[4]);
				geld = geld - kosten[4];
				kosten[4] = kosten[4] + (kosten[4]  /4);
			}else if(anzahl[14] >= 10){
				zu_viel();
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == buttonArray2[4]){
			
			if(geld>= kosten[5]){
				anzahl[15] = +1;
				geld_sec= geld_sec + ((geld_sec/100) * steigern[5]);
				geld = geld - kosten[5];
				kosten[5] = kosten[5] + (kosten[5]  /4);
			}else if(anzahl[15] >= 10){
				zu_viel();
			}else{
				nicht_geld();
			}
		}else if(e.getSource() == buttonArray2[5]){
			
			if(geld>= kosten[6]){
				anzahl[16] = +1;
				geld_sec= geld_sec + ((geld_sec/100) * steigern[6]);
				geld = geld - kosten[6];
				kosten[6] = kosten[6] + (kosten[6]  /4);
			}else if(anzahl[16] >= 10){
				zu_viel();
			}else{
				nicht_geld();
			}
		}
	}

	public void save(){
		
	}
	
	public void nicht_geld(){
		
		Object[] options ={"OK"};
		
		JOptionPane.showOptionDialog(null,"Nicht genügend Geld","Informationen/Erklärung",JOptionPane.DEFAULT_OPTION,JOptionPane.PLAIN_MESSAGE,null,options,options[0]);
	}
	
	public void zu_viel(){
		
		Object[] options ={"OK"};
		
		JOptionPane.showOptionDialog(null,"Maximum Ereicht","Informationen/Erklärung",JOptionPane.DEFAULT_OPTION,JOptionPane.PLAIN_MESSAGE,null,options,options[0]);
	}
}
```


----------



## Dompteur (12. Mrz 2015)

Deine for-Schleife steht da irgendwie verloren zwischen den Instanzvariablen-Deklarationen.
Code gehört in eine Methode. 

(Ja, ich weißt, es gibt zwar noch andere Stellen, wo man Code hinpacken kann, aber für den Anfang will ich niemanden verwirren).


----------



## anfänger1542 (12. Mrz 2015)

Und wie schreib ich diese Methode??


----------



## Saheeda (12. Mrz 2015)

Mir ist noch was aufgefallen:

Du kannst vermutlich deine ActionPerformed-Methode stark verkürzen.

Den richtigen Button würde ich mit einer Schleife suchen:


```
public void actionPerformed(ActionEvent e){
		for (int i = 0; i < buttonArray.length; i++) {
			if(e.getSource() == buttonArray[i]){
				
				// mach was
			}
		}		
	}
```

Die Arrays "kosten" und "steigern" würde ich so umbauen (bzw. in getrennte Arrays speichern), dass der Index des Buttons mit dem Index in den anderen Arrays identisch ist. Oder zumindest die Differenz immer gleich ist. Dann kannst du nämlich auch sowas machen:



```
public void actionPerformed(ActionEvent e){
		for (int i = 0; i < buttonArray.length; i++) {
			if(e.getSource() == buttonArray[i]){
				
				if(geld >=kosten[i]){
					anzahl[i] = +1;
					geld_sec = geld_sec + steigern[i];
					geld = geld - kosten[i];
					kosten[i] = kosten[i] + (kosten[i] / 4);
					}else{
					nicht_geld();
					}
			}
		}		
	}
```

---

Zum ;-Problem:
Du kannst z.B. eine Methode "initialisiere()" machen und dort die Arrays befüllen.


```
public void initialize() {
		for (int i = 0; i < 16; i++) {
			anzahl[i] = 0;
		}

		kosten[0] = 5000;
		kosten[1] = 8000;
		kosten[2] = 15000;
		kosten[3] = 40000;
		kosten[4] = 80000;
		kosten[5] = 150000;
		kosten[6] = 190000;
		kosten[7] = 100;
		kosten[8] = 500;
		kosten[9] = 5600;
		kosten[10] = 18000;
		kosten[11] = 40000;
		kosten[12] = 240000;
		kosten[13] = 400000;
		kosten[14] = 950000;
		kosten[15] = 1200000;
		kosten[16] = 1900000;

		steigern[0] = 1;
		steigern[1] = 1.5;
		steigern[2] = 2;
		steigern[3] = 3;
		steigern[4] = 5;
		steigern[5] = 6.5;
		steigern[6] = 9;
		steigern[7] = 0.50;
		steigern[8] = 1;
		steigern[9] = 2.5;
		steigern[10] = 7.30;
		steigern[11] = 19.70;
		steigern[12] = 37.60;
		steigern[13] = 69.75;
		steigern[14] = 99.10;
		steigern[15] = 130;
		steigern[16] = 205.30;

	}
```


----------



## Flown (12. Mrz 2015)

Arrays mit initialisierten Werten schreibt man so:


```
double[] steigern = { 1, 1.5, 2, 3, 5, 6.5, 9, 0.5, 1, 2.5, 7.3, 19.7, 37.6, 69.75, 99.1, 130, 205.3 };
double[] kosten = { 5000, 8000, 15000, 40000, 80000, 150000, 190000, 100, 500, 5600, 18000, 40000, 240000, 400000, 950000, 1200000, 1900000 };
```


----------



## anfänger1542 (12. Mrz 2015)

Danke für alles allerdings wenn ich das so änder(und ich hoffe es stimmt so) funktioniert garnix mehr  


```
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class Gui extends JPanel  implements ActionListener{

	private static final long serialVersionUID = 1L;
	
	
		int[] anzahl = new int[16];
		double[] steigern = new double[17];
		double[] kosten = new double[17];
		JButton[] buttonArray  = new JButton[9];
		JButton[] buttonArray2 = new JButton[5];
		private JButton save;
		double geld 	     = 200;
		double geld_sec		 = 0;
		
		
public void initialize(){
		
	for(int i = 0; i <16; i++){
			anzahl[i] = 0;
		}	
	
	kosten[0]  = 5000;
	kosten[1]  = 8000;
	kosten[2]  = 15000;
	kosten[3]  = 40000;
	kosten[4]  = 80000;
	kosten[5]  = 150000;
	kosten[6]  = 190000;
	kosten[7]  = 100;
	kosten[8]  = 500;
	kosten[9]  = 5600;
	kosten[10] = 18000;
	kosten[11] = 40000;
	kosten[12] = 240000;
	kosten[13] = 400000;
	kosten[14] = 950000;
	kosten[15] = 1200000;
	kosten[16] = 1900000;
	
	
	steigern[0]  = 1;
	steigern[1]  = 1.5;
	steigern[2]  = 2;
	steigern[3]  = 3;
	steigern[4]  = 5;
	steigern[5]  = 6.5;
	steigern[6]  = 9;
	steigern[7]  = 0.50;
	steigern[8]  = 1;
	steigern[9]  = 2.5;
	steigern[10] = 7.30;
	steigern[11] = 19.70;
	steigern[12] = 37.60;
	steigern[13] = 69.75;
	steigern[14] = 99.10;
	steigern[15] = 130;
	steigern[16] = 205.30;
		}

	public Gui(){
	
		
		for(int i = 0; i<buttonArray.length; i++){
			int x = 25 * (i+1);
			buttonArray[i] = new JButton("+");
			buttonArray[i].setBounds(x, 300, 100, 100);
			buttonArray[i].addActionListener(this);
		}
			
		save = new JButton("Save");
		save.setBounds(0,1750,100,100);
		save.addActionListener(this);
		add(save);
		
		for(int i = 0; i<buttonArray2.length; i++){
			int x = 25 * (i+1);
			buttonArray2[i] = new JButton("A");
			buttonArray2[i].setBounds(x, 300, 100, 100);
			buttonArray2[i].addActionListener(this);
		}
		
	}
	
	public void paint(Graphics g){
		
		super.paint(g);
		Graphics2D fs =(Graphics2D)g;
		
		fs.drawString("Geld = "+ geld, 400,50);
		fs.drawString("Geld / sec = " + geld_sec, 500,50);
		
		fs.drawString("Kosten: ",10,50);
		fs.drawString("pro Sec: ",160,50);
		fs.drawString("Upgrad: ",260,50);
		
		fs.drawString("Zigaretten " +kosten[7],10,75);
		fs.drawString(" " +steigern[7],160,75);
		fs.drawString("= Zigaretten " +anzahl[0],260,75);
		fs.drawString("Kaugummi  "+kosten[8] ,10,100);
		fs.drawString(""+steigern[8],160,100);
		fs.drawString("= Kaugummi  "+anzahl[1],260,100);
		fs.drawString("Blumen  "+kosten[9],10,125);
		fs.drawString(""+steigern[9],160,125);
		fs.drawString("= Blumen  "+anzahl[2],260,125);
		fs.drawString("Tante Ema  "+kosten[10],10,150);
		fs.drawString(""+steigern[10],160,150);
		fs.drawString("= Tante Ema  "+anzahl[3],260,150);
		fs.drawString("Kaufhaus  "+kosten[11],10,175);
		fs.drawString(""+steigern[11],160,175);
		fs.drawString("= Kaufhaus  "+anzahl[4],260,175);
		fs.drawString("Öl  "+kosten[12],10,200);
		fs.drawString(""+steigern[12],160,200);
		fs.drawString("= Öl  "+anzahl[5],260,200);
		fs.drawString("Erz "+kosten[13],10,225);
		fs.drawString(""+steigern[13],160,225);
		fs.drawString("= Erz "+anzahl[6],260,225);
		fs.drawString("Stahl  "+kosten[14],10,250);
		fs.drawString(""+steigern[14],160,250);
		fs.drawString("= Stahl  "+anzahl[7],260,250);
		fs.drawString("Gold  "+kosten[15],10,275);
		fs.drawString(""+steigern[15],160,275);
		fs.drawString("= Gold  "+anzahl[8],260,275);
		fs.drawString("Diamanten "+kosten[16],10,300);
		fs.drawString(""+steigern[16],160,300);
		fs.drawString("= Diamanten "+anzahl[9],260,300);
		
		fs.drawString("Werbung/Kosten: ", 1100,50);
		fs.drawString("Prozent steigerung: ", 1250,50);
		fs.drawString("Upgrade: ", 1400,50);
		
		fs.drawString("Flyer: " + kosten[0],1100,75);
		fs.drawString("" + steigern[0],1300,75);
		fs.drawString("= Flyer " + anzahl[10],1400,75);
		fs.drawString("Visitenkarten: " + kosten[1],1100,100);
		fs.drawString("" + steigern[1] ,1300,100);
		fs.drawString("= Visitenkarten " + anzahl[11],1400,100);
		fs.drawString("Plackart: " + kosten[2],1100,125);
		fs.drawString("" + steigern[2],1300,125);
		fs.drawString(" = Plackart " + anzahl[12],1400,125);
		fs.drawString("Werbebanner: " + kosten[3],1100,150);
		fs.drawString("" + steigern[3],1300,150);
		fs.drawString("= Werbebanner " + anzahl[13],1400,150);
		fs.drawString("Zeitung: " + kosten[4],1100,175);
		fs.drawString("" + steigern[4],1300,175);
		fs.drawString("= Zeitung " + anzahl[14],1400,175);
		fs.drawString("Radio: " + kosten[5],1100,200);
		fs.drawString("" + steigern[5],1300,200);
		fs.drawString("= Radio " + anzahl[15],1400,200);
		fs.drawString("Fernsehen: " + kosten[6],1100,225);
		fs.drawString("" + steigern[6],1300,225);
		fs.drawString("= Fernsehen " +anzahl[16],1400,225);
		
		repaint();
	}
	
	public void actionPerformed(ActionEvent e) {
		
		for (int i = 0; i < buttonArray.length; i++) {
			if(e.getSource() == buttonArray[i]){
 
				if(geld >=kosten[i]){
					anzahl[i] = +1;
					geld_sec = geld_sec + steigern[i];
					geld = geld - kosten[i];
					kosten[i] = kosten[i] + (kosten[i] / 4);
					}else{
					nicht_geld();
					}
			}
		}
		
		for(int i = 0; i<buttonArray2.length;i++){
			if(e.getSource() == buttonArray2[i]){
				 
				if(geld >=kosten[i]){
					anzahl[i] = +1;
					geld_sec = geld_sec + steigern[i];
					geld = geld - kosten[i];
					kosten[i] = kosten[i] + (kosten[i] / 4);
					}else if(anzahl[i] >= 10){
					zu_viel();
					}else{
						nicht_geld();
					}
			}
		}
	}
		
	public void save(){
		
	}
	
	public void nicht_geld(){
		
		Object[] options ={"OK"};
		
		JOptionPane.showOptionDialog(null,"Nicht genügend Geld","Informationen/Erklärung",JOptionPane.DEFAULT_OPTION,JOptionPane.PLAIN_MESSAGE,null,options,options[0]);
	}
	
	public void zu_viel(){
		
		Object[] options ={"OK"};
		
		JOptionPane.showOptionDialog(null,"Maximum Ereicht","Informationen/Erklärung",JOptionPane.DEFAULT_OPTION,JOptionPane.PLAIN_MESSAGE,null,options,options[0]);
	}
}
```


----------



## Dompteur (12. Mrz 2015)

Deine initialize() Methode wird nirgends aufgerufen.


----------



## anfänger1542 (13. Mrz 2015)

```
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class Gui extends JPanel  implements ActionListener{

	private static final long serialVersionUID = 1L;
	
	
		int[] anzahl = new int[16];
		double[] steigern = new double[17];
		double[] kosten = new double[17];
		JButton[] buttonArray  = new JButton[9];
		JButton[] buttonArray2 = new JButton[5];
		private JButton save;
		double geld 	     = 200;
		double geld_sec		 = 0;
		
		
public void initialize(){
		
	for(int i = 0; i <16; i++){
			anzahl[i] = 0;
		}	
	
	double[] steigern = { 1, 1.5, 2, 3, 5, 6.5, 9, 0.5, 1, 2.5, 7.3, 19.7, 37.6, 69.75, 99.1, 130, 205.3 };
	double[] kosten = { 5000, 8000, 15000, 40000, 80000, 150000, 190000, 100, 500, 5600, 18000, 40000, 240000, 400000, 950000, 1200000, 1900000 };
		}

	public Gui(){
	
	
		
		for(int i = 0; i<buttonArray.length; i++){
			int x = 25 * (i+1);
			buttonArray[i] = new JButton("+");
			buttonArray[i].setBounds(x, 300, 100, 100);
			buttonArray[i].addActionListener(this);
		}
			
		save = new JButton("Save");
		save.setBounds(0,1750,100,100);
		save.addActionListener(this);
		add(save);
		
		for(int i = 0; i<buttonArray2.length; i++){
			int x = 25 * (i+1);
			buttonArray2[i] = new JButton("A");
			buttonArray2[i].setBounds(x, 300, 100, 100);
			buttonArray2[i].addActionListener(this);
		}
		
	}
	
	public void paint(Graphics g){
		
		
		
		super.paint(g);
		Graphics2D fs =(Graphics2D)g;
		
		fs.drawString("Geld = "+ geld, 400,50);
		fs.drawString("Geld / sec = " + geld_sec, 500,50);
		
		fs.drawString("Kosten: ",10,50);
		fs.drawString("pro Sec: ",160,50);
		fs.drawString("Upgrad: ",260,50);
		
		fs.drawString("Zigaretten " +kosten[7],10,75);
		fs.drawString(" " +steigern[7],160,75);
		fs.drawString("= Zigaretten " +anzahl[0],260,75);
		fs.drawString("Kaugummi  "+kosten[8] ,10,100);
		fs.drawString(""+steigern[8],160,100);
		fs.drawString("= Kaugummi  "+anzahl[1],260,100);
		fs.drawString("Blumen  "+kosten[9],10,125);
		fs.drawString(""+steigern[9],160,125);
		fs.drawString("= Blumen  "+anzahl[2],260,125);
		fs.drawString("Tante Ema  "+kosten[10],10,150);
		fs.drawString(""+steigern[10],160,150);
		fs.drawString("= Tante Ema  "+anzahl[3],260,150);
		fs.drawString("Kaufhaus  "+kosten[11],10,175);
		fs.drawString(""+steigern[11],160,175);
		fs.drawString("= Kaufhaus  "+anzahl[4],260,175);
		fs.drawString("Öl  "+kosten[12],10,200);
		fs.drawString(""+steigern[12],160,200);
		fs.drawString("= Öl  "+anzahl[5],260,200);
		fs.drawString("Erz "+kosten[13],10,225);
		fs.drawString(""+steigern[13],160,225);
		fs.drawString("= Erz "+anzahl[6],260,225);
		fs.drawString("Stahl  "+kosten[14],10,250);
		fs.drawString(""+steigern[14],160,250);
		fs.drawString("= Stahl  "+anzahl[7],260,250);
		fs.drawString("Gold  "+kosten[15],10,275);
		fs.drawString(""+steigern[15],160,275);
		fs.drawString("= Gold  "+anzahl[8],260,275);
		fs.drawString("Diamanten "+kosten[16],10,300);
		fs.drawString(""+steigern[16],160,300);
		fs.drawString("= Diamanten "+anzahl[9],260,300);
		
		fs.drawString("Werbung/Kosten: ", 1100,50);
		fs.drawString("Prozent steigerung: ", 1250,50);
		fs.drawString("Upgrade: ", 1400,50);
		
		fs.drawString("Flyer: " + kosten[0],1100,75);
		fs.drawString("" + steigern[0],1300,75);
		fs.drawString("= Flyer " + anzahl[10],1400,75);
		fs.drawString("Visitenkarten: " + kosten[1],1100,100);
		fs.drawString("" + steigern[1] ,1300,100);
		fs.drawString("= Visitenkarten " + anzahl[11],1400,100);
		fs.drawString("Plackart: " + kosten[2],1100,125);
		fs.drawString("" + steigern[2],1300,125);
		fs.drawString(" = Plackart " + anzahl[12],1400,125);
		fs.drawString("Werbebanner: " + kosten[3],1100,150);
		fs.drawString("" + steigern[3],1300,150);
		fs.drawString("= Werbebanner " + anzahl[13],1400,150);
		fs.drawString("Zeitung: " + kosten[4],1100,175);
		fs.drawString("" + steigern[4],1300,175);
		fs.drawString("= Zeitung " + anzahl[14],1400,175);
		fs.drawString("Radio: " + kosten[5],1100,200);
		fs.drawString("" + steigern[5],1300,200);
		fs.drawString("= Radio " + anzahl[15],1400,200);
		fs.drawString("Fernsehen: " + kosten[6],1100,225);
		fs.drawString("" + steigern[6],1300,225);
		fs.drawString("= Fernsehen " +anzahl[16],1400,225);
		
		repaint();
	}
	
	public void actionPerformed(ActionEvent e) {
		
		
		
		for (int i = 0; i < buttonArray.length; i++) {
			
			
			if(e.getSource() == buttonArray[i]){
 
				if(geld >=kosten[i]){
					anzahl[i] = +1;
					geld_sec = geld_sec + steigern[i];
					geld = geld - kosten[i];
					kosten[i] = kosten[i] + (kosten[i] / 4);
					}else{
					nicht_geld();
					}
			}else{
				for (int j = 0; j < buttonArray2.length; j++) {
					
					initialize();
					if(e.getSource() == buttonArray2[i]){
		 
						if(geld >=kosten[i]){
							anzahl[i] = +1;
							geld_sec = geld_sec + steigern[i];
							geld = geld - kosten[i];
							kosten[i] = kosten[i] + (kosten[i] / 4);
							}else if (anzahl[i] >= 10){
							zu_viel();
							}else{
								nicht_geld();
							}
					}
			}
		}
	}
		}
		
	public void save(){
		
	}
	
	public void nicht_geld(){
		
		Object[] options ={"OK"};
		
		JOptionPane.showOptionDialog(null,"Nicht genügend Geld","Informationen/Erklärung",JOptionPane.DEFAULT_OPTION,JOptionPane.PLAIN_MESSAGE,null,options,options[0]);
	}
	
	public void zu_viel(){
		
		Object[] options ={"OK"};
		
		JOptionPane.showOptionDialog(null,"Maximum Ereicht","Informationen/Erklärung",JOptionPane.DEFAULT_OPTION,JOptionPane.PLAIN_MESSAGE,null,options,options[0]);
	}
}
```

bei diesem Code krieg ich diese Fehlermeldung.


```
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 16
	at Gui.paint(Gui.java:128)
	at javax.swing.JComponent.paintChildren(Unknown Source)
	at javax.swing.JComponent.paint(Unknown Source)
	at javax.swing.JComponent.paintChildren(Unknown Source)
	at javax.swing.JComponent.paint(Unknown Source)
	at javax.swing.JLayeredPane.paint(Unknown Source)
	at javax.swing.JComponent.paintChildren(Unknown Source)
	at javax.swing.JComponent.paintToOffscreen(Unknown Source)
	at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(Unknown Source)
	at javax.swing.RepaintManager$PaintManager.paint(Unknown Source)
	at javax.swing.RepaintManager.paint(Unknown Source)
	at javax.swing.JComponent.paint(Unknown Source)
	at java.awt.GraphicsCallback$PaintCallback.run(Unknown Source)
	at sun.awt.SunGraphicsCallback.runOneComponent(Unknown Source)
	at sun.awt.SunGraphicsCallback.runComponents(Unknown Source)
	at java.awt.Container.paint(Unknown Source)
	at java.awt.Window.paint(Unknown Source)
	at javax.swing.RepaintManager$4.run(Unknown Source)
	at javax.swing.RepaintManager$4.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
	at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
	at javax.swing.RepaintManager.prePaintDirtyRegions(Unknown Source)
	at javax.swing.RepaintManager.access$1300(Unknown Source)
	at javax.swing.RepaintManager$ProcessingRunnable.run(Unknown Source)
	at java.awt.event.InvocationEvent.dispatch(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$500(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
```


----------



## tffasse (13. Mrz 2015)

Um den letzten Index des Arrays zu bekommen, musst du nicht auf den 16. Index zugreifen, sondern auf den 15 (bedenke, dass der Index immer mit 0 anfängt und nicht mit 1 ! ).

Aber eigentlich müsstest du selber darauf kommen. Immerhin sagt dir die Fehlermeldung 1. was für eine Exception geflogen ist (zur Not im Internet oder in der API nachgucken) und 2. wo der Fehler aufgetreten ist. Du kannst ja schließlich nicht bei jeder Exception/ jedem Problem im Forum nachfragen. :bae:


----------



## VfL_Freak (13. Mrz 2015)

Moin,

hmm, in der genannten Zeile hat dann Anzahl wohl keine 17 (!!) Elemente (bzw. kein Element [16]) mehr.

Leider ist Dein Code recht unübersichtlich, aber mir ist so auf die Schnelle diese Zeilen aufgefallen:

```
anzahl[i] = +1;
```
Willst Du hier den Wert '1' setzen oder den Inhalt inkrementieren ??
Im ersten Fall würde auch 

```
anzahl[i] = 1;
```
reichen, im zweiten Fall müsstest Du dann auch wirklich was addieren !!

```
anzahl[i] = anzahl[i]+1;
// rsp.
anzahl[i]++;
```

Gruß Klaus


----------



## anfänger1542 (13. Mrz 2015)

Das hab ich jetzt so weit geändert. Allerdings funktioniert immer noch nix.

```
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class Gui extends JPanel  implements ActionListener{

	private static final long serialVersionUID = 1L;
	
		int[] anzahl = new int[15];
		double[] steigern = new double[15];
		double[] kosten = new double[15];
		JButton[] buttonArray  = new JButton[9];
		JButton[] buttonArray2 = new JButton[5];
		private JButton save;
		double geld 	     = 200;
		double geld_sec		 = 0;
		Timer timer;
		
public void initialize(){
		
	for(int i = 0; i <16; i++){
			anzahl[i] = 0;
		}	
	
	double[] steigern = { 1, 1.5, 2, 3, 5, 6.5, 9, 0.5, 1, 2.5, 7.3, 19.7, 37.6, 69.75, 99.1, 130, 205.3 };
	double[] kosten = { 5000, 8000, 15000, 40000, 80000, 150000, 190000, 100, 500, 5600, 18000, 40000, 240000, 400000, 950000, 1200000, 1900000 };
		}
  

	public Gui(){
		
		new Timer().schedule(new TimerTask() {
		    @Override
		    public void run() {
		        geld += geld_sec;
		    }
			}, 1000, 1000);
		
		for(int i = 0; i<buttonArray.length; i++){
			int x = 25 * (i+1);
			buttonArray[i] = new JButton("+");
			buttonArray[i].setBounds(x, 300, 100, 100);
			buttonArray[i].addActionListener(this);
		}
			
		save = new JButton("Save");
		save.setBounds(0,1750,100,100);
		save.addActionListener(this);
		add(save);
		
		for(int i = 0; i<buttonArray2.length; i++){
			int x = 25 * (i+1);
			buttonArray2[i] = new JButton("A");
			buttonArray2[i].setBounds(x, 300, 100, 100);
			buttonArray2[i].addActionListener(this);
		}
	}
	
	public void paint(Graphics g){
		
		super.paint(g);
		Graphics2D fs =(Graphics2D)g;
		
		fs.drawString("Geld = "+ geld, 400,50);
		fs.drawString("Geld / sec = " + geld_sec, 500,50);
		
		fs.drawString("Kosten: ",10,50);
		fs.drawString("pro Sec: ",160,50);
		fs.drawString("Upgrad: ",260,50);
		
		fs.drawString("Zigaretten " +kosten[7],10,75);
		fs.drawString(" " +steigern[7],160,75);
		fs.drawString("= Zigaretten " +anzahl[0],260,75);
		fs.drawString("Kaugummi  "+kosten[8] ,10,100);
		fs.drawString(""+steigern[8],160,100);
		fs.drawString("= Kaugummi  "+anzahl[1],260,100);
		fs.drawString("Blumen  "+kosten[9],10,125);
		fs.drawString(""+steigern[9],160,125);
		fs.drawString("= Blumen  "+anzahl[2],260,125);
		fs.drawString("Tante Ema  "+kosten[10],10,150);
		fs.drawString(""+steigern[10],160,150);
		fs.drawString("= Tante Ema  "+anzahl[3],260,150);
		fs.drawString("Kaufhaus  "+kosten[11],10,175);
		fs.drawString(""+steigern[11],160,175);
		fs.drawString("= Kaufhaus  "+anzahl[4],260,175);
		fs.drawString("Öl  "+kosten[12],10,200);
		fs.drawString(""+steigern[12],160,200);
		fs.drawString("= Öl  "+anzahl[5],260,200);
		fs.drawString("Erz "+kosten[13],10,225);
		fs.drawString(""+steigern[13],160,225);
		fs.drawString("= Erz "+anzahl[6],260,225);
		fs.drawString("Stahl  "+kosten[14],10,250);
		fs.drawString(""+steigern[14],160,250);
		fs.drawString("= Stahl  "+anzahl[7],260,250);
		fs.drawString("Gold  "+kosten[15],10,275);
		fs.drawString(""+steigern[15],160,275);
		fs.drawString("= Gold  "+anzahl[8],260,275);
		fs.drawString("Diamanten "+kosten[16],10,300);
		fs.drawString(""+steigern[16],160,300);
		fs.drawString("= Diamanten "+anzahl[9],260,300);
		
		fs.drawString("Werbung/Kosten: ", 1100,50);
		fs.drawString("Prozent steigerung: ", 1250,50);
		fs.drawString("Upgrade: ", 1400,50);
		
		fs.drawString("Flyer: " + kosten[0],1100,75);
		fs.drawString("" + steigern[0],1300,75);
		fs.drawString("= Flyer " + anzahl[10],1400,75);
		fs.drawString("Visitenkarten: " + kosten[1],1100,100);
		fs.drawString("" + steigern[1] ,1300,100);
		fs.drawString("= Visitenkarten " + anzahl[11],1400,100);
		fs.drawString("Plackart: " + kosten[2],1100,125);
		fs.drawString("" + steigern[2],1300,125);
		fs.drawString(" = Plackart " + anzahl[12],1400,125);
		fs.drawString("Werbebanner: " + kosten[3],1100,150);
		fs.drawString("" + steigern[3],1300,150);
		fs.drawString("= Werbebanner " + anzahl[13],1400,150);
		fs.drawString("Zeitung: " + kosten[4],1100,175);
		fs.drawString("" + steigern[4],1300,175);
		fs.drawString("= Zeitung " + anzahl[14],1400,175);
		fs.drawString("Radio: " + kosten[5],1100,200);
		fs.drawString("" + steigern[5],1300,200);
		fs.drawString("= Radio " + anzahl[15],1400,200);
		fs.drawString("Fernsehen: " + kosten[6],1100,225);
		fs.drawString("" + steigern[6],1300,225);
		fs.drawString("= Fernsehen " +anzahl[16],1400,225);
		
		repaint();
	}
	
	
	
	public void actionPerformed(ActionEvent e) {
		
		for (int i = 0; i < buttonArray.length; i++) {
			
			
			if(e.getSource() == buttonArray[i]){
 
				if(geld >=kosten[i]){
					anzahl[i] = anzahl[i] +1;
					anzahl[i]++;
					geld_sec = geld_sec + steigern[i];
					geld = geld - kosten[i];
					kosten[i] = kosten[i] + (kosten[i] / 4);
					}else{
						nicht_geld();
					}
			}else{
				for (int j = 0; j < buttonArray2.length; j++) {
					
					initialize();
					if(e.getSource() == buttonArray2[i]){
		 
						if(geld >=kosten[i]){
							anzahl[i] = anzahl[i] +1;
							anzahl[i]++;
							geld_sec = geld_sec + steigern[i];
							geld = geld - kosten[i];
							kosten[i] = kosten[i] + (kosten[i] / 4);
							}else if (anzahl[i] >= 10){
								zu_viel();
							}else{
								nicht_geld();
							}
					}
			}
		}
	}if(e.getSource() == save){
		save();
	}
		}
	public void nicht_geld(){
		
		Object[] options ={"OK"};
		
		JOptionPane.showOptionDialog(null,"Nicht genügend Geld","Informationen/Erklärung",JOptionPane.DEFAULT_OPTION,JOptionPane.PLAIN_MESSAGE,null,options,options[0]);
	}
	
	public void zu_viel(){
		
		Object[] options ={"OK"};
		
		JOptionPane.showOptionDialog(null,"Maximum Ereicht","Informationen/Erklärung",JOptionPane.DEFAULT_OPTION,JOptionPane.PLAIN_MESSAGE,null,options,options[0]);
	}
	public void save(){
		
	}
	
}
```


----------



## tffasse (13. Mrz 2015)

anfänger1542 hat gesagt.:


> Das hab ich jetzt so weit geändert. Allerdings funktioniert immer noch nix.
> 
> ```
> import java.awt.Graphics;
> ...



Kann es auch nicht. Du solltest nicht das Array mit dem Wert 15 initialisieren (Zeile 15) sondern in Zeile 132 (vorher Zeile 128, so wie die Fehlermeldung es auch gesagt hat) nicht auf den Wert 16 zugreifen, sondern auf 15.  Das Array hat zwar 16 Felder, allerdings fängt der Index bei 0 an, somit ist der letzte Index 15 und nicht 16. Vielleicht solltest du dir nochmal das Thema Arrays genauer ansehen. :rtfm:

Alternativ initialisert du, wie Vfl-Freak gerade im nachfolgenden Beitrag beschrieben hat, das Array anzahl mit dem Wert 17 und änderst die for-Schleife, sodass 17 Felder im Array initialisiert werden, falls du 17 Felder benötigst. Dann wäre der letzte Index 16.


----------



## VfL_Freak (13. Mrz 2015)

Moin,

also bitte 
Bist Du sicher, dass Du weißt, was Du da tust ??

```
anzahl[i] = anzahl[i] +1;
anzahl[i]++;
```
Warum denn *zweimal* hochzählen ???:L

Hast Du überhaupt den Beitrag von @tffasse gelesen?
Nochmal: damit Du überhaupt auf "anzahl[16]" zugreifen kannst, müssen 17 (*!!!*) Elemente im Array sein, da der Index von 0 ... Länge-1 läuft!

Leider überschaue ich das in Deinem Code nicht wirklich :-(

Gruß Klaus


----------



## anfänger1542 (13. Mrz 2015)

Danke danke  mir ist klar das der Index erst bei 0 anfängt. Das vergess ich nur gern mal wieder und dann kommt sowas raus.....
Jetzt zeigte er alles wieder an biss auf die "+" und "A" Button. Aber denn Save Button schon??


----------



## VfL_Freak (13. Mrz 2015)

den Save-Button addest Du ja auch:

```
save = new JButton("Save");
save.setBounds(0,1750,100,100);
save.addActionListener(this);
add(save); // !!!!!
```
und die anderen ???


----------



## anfänger1542 (13. Mrz 2015)

So weit so gut. Es funktioniert teilweiße.

```
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Timer;
import java.util.TimerTask;

import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class Gui extends JPanel  implements ActionListener{

	private static final long serialVersionUID = 1L;
	
		int[] anzahl = new int[10];
		int[] anzahl2 = new int[8];
		double[] steigern_sec = new double[10];
		double[] steigern_pro = new double[8];
		double[] kosten = new double[10];
		double[] kosten2 = new double[8];
		
		JButton[] buttonArray  = new JButton[10];
		JButton[] buttonArray2 = new JButton[7];
		
		private JButton save;
		
		double geld_sec		 = 0;
		double geld = 200;

		
public void initialize(){
		
	for(int i = 0; i <16; i++){
			anzahl[i] = 0;
		}	
	
	double[] steigern_sec = {0.5, 1, 2.5, 7.3, 19.7, 37.6, 69.75, 99.1, 130, 205.3 };
	double[] steigern_pro = {1,1.5,2.5,3,4.5,6,9,};
	double[] kosten = { 100, 500, 5600, 18000, 40000, 240000, 400000, 950000, 1200000, 1900000 };
	double[] kosten2 = { 5000, 8000, 15000, 40000, 80000, 150000, 190000,};
		}
  

	public Gui(){
		
		
		for(int i = 0; i<buttonArray.length; i++){
			int x = 25 * (i+1);
			buttonArray[i] = new JButton("+");
			buttonArray[i].setBounds(x, 300, 100, 100);
			buttonArray[i].addActionListener(this);
			add(buttonArray[i]);
		}
			
		save = new JButton("Save");
		save.setBounds(0,1750,150,100);
		save.addActionListener(this);
		add(save);
		
		for(int i = 0; i<buttonArray2.length; i++){
			int x = 25 * (i+1);
			buttonArray2[i] = new JButton("+A");
			buttonArray2[i].setBounds(x, 1000, 100, 100);
			buttonArray2[i].addActionListener(this);
			add(buttonArray2[i]);
		}
		
		new Timer().schedule(new TimerTask() {
		    @Override
		    public void run() {
		        geld += geld_sec;
		    }
			}, 1000, 1000);
	}
	
	public void paint(Graphics g){
		
		super.paint(g);
		Graphics2D fs =(Graphics2D)g;
		
		fs.drawString("Geld = "+ geld, 400,50);
		fs.drawString("Geld / sec = " + geld_sec, 500,50);
		
		fs.drawString("Kosten: ",10,50);
		fs.drawString("pro Sec: ",160,50);
		fs.drawString("Upgrad: ",260,50);
		
		fs.drawString("Zigaretten " +kosten[0],10,75);
		fs.drawString("" +steigern_sec[0],160,75);
		fs.drawString("= Zigaretten " +anzahl[0],260,75);
		fs.drawString("Kaugummi  "+kosten[1] ,10,100);
		fs.drawString(""+steigern_sec[1],160,100);
		fs.drawString("= Kaugummi  "+anzahl[1],260,100);
		fs.drawString("Blumen  "+kosten[2],10,125);
		fs.drawString(""+steigern_sec[2],160,125);
		fs.drawString("= Blumen  "+anzahl[2],260,125);
		fs.drawString("Tante Ema  "+kosten[3],10,150);
		fs.drawString(""+steigern_sec[3],160,150);
		fs.drawString("= Tante Ema  "+anzahl[3],260,150);
		fs.drawString("Kaufhaus  "+kosten[4],10,175);
		fs.drawString(""+steigern_sec[4],160,175);
		fs.drawString("= Kaufhaus  "+anzahl[4],260,175);
		fs.drawString("Öl  "+kosten[5],10,200);
		fs.drawString(""+steigern_sec[5],160,200);
		fs.drawString("= Öl  "+anzahl[5],260,200);
		fs.drawString("Erz "+kosten[6],10,225);
		fs.drawString(""+steigern_sec[6],160,225);
		fs.drawString("= Erz "+anzahl[6],260,225);
		fs.drawString("Stahl  "+kosten[7],10,250);
		fs.drawString(""+steigern_sec[7],160,250);
		fs.drawString("= Stahl  "+anzahl[7],260,250);
		fs.drawString("Gold  "+kosten[8],10,275);
		fs.drawString(""+steigern_sec[8],160,275);
		fs.drawString("= Gold  "+anzahl[8],260,275);
		fs.drawString("Diamanten "+kosten[9],10,300);
		fs.drawString(""+steigern_sec[9],160,300);
		fs.drawString("= Diamanten "+anzahl[9],260,300);
		
		fs.drawString("Werbung/Kosten: ", 1100,50);
		fs.drawString("Prozent steigerung: ", 1250,50);
		fs.drawString("Upgrade: ", 1400,50);
		
		fs.drawString("Flyer: " + kosten2[0],1100,75);
		fs.drawString("" + steigern_pro[0],1300,75);
		fs.drawString("= Flyer " + anzahl2[0],1400,75);
		fs.drawString("Visitenkarten: " + kosten2[1],1100,100);
		fs.drawString("" + steigern_pro[1] ,1300,100);
		fs.drawString("= Visitenkarten " + anzahl2[1],1400,100);
		fs.drawString("Plackart: " + kosten2[2],1100,125);
		fs.drawString("" + steigern_pro[2],1300,125);
		fs.drawString(" = Plackart " + anzahl2[2],1400,125);
		fs.drawString("Werbebanner: " + kosten2[3],1100,150);
		fs.drawString("" + steigern_pro[3],1300,150);
		fs.drawString("= Werbebanner " + anzahl2[3],1400,150);
		fs.drawString("Zeitung: " + kosten2[4],1100,175);
		fs.drawString("" + steigern_pro[4],1300,175);
		fs.drawString("= Zeitung " + anzahl2[4],1400,175);
		fs.drawString("Radio: " + kosten2[5],1100,200);
		fs.drawString("" + steigern_pro[5],1300,200);
		fs.drawString("= Radio " + anzahl2[5],1400,200);
		fs.drawString("Fernsehen: " + kosten2[6],1100,225);
		fs.drawString("" + steigern_pro[6],1300,225);
		fs.drawString("= Fernsehen " +anzahl2[6],1400,225);
		
		repaint();
	}
	
	
	
	public void actionPerformed(ActionEvent e) {
		
		for (int i = 0; i < buttonArray.length; i++) {
			
			if(e.getSource() == buttonArray[i]){
 
				if(geld >=kosten[i]){
					anzahl[i] = anzahl[i] +1;
					geld_sec = geld_sec + steigern_sec[i];
					geld = geld - kosten[i];
					kosten[i] = kosten[i] + (kosten[i] / 4);
					}else{
						nicht_geld();
					}
			}
		}
		for (int i = 0; i < buttonArray2.length; i++) {
					
					if(e.getSource() == buttonArray2[i]){
		 
						if(geld >=kosten2[i]){
							anzahl2[i] = anzahl2[i] +1;
							geld_sec = geld_sec + steigern_pro[i];
							geld = geld - kosten2[i];
							kosten2[i] = kosten2[i] + (kosten2[i] / 4);
							}else if (anzahl2[i] >= 10){
								zu_viel();
							}else{
								nicht_geld();
							}
					}
			}if(e.getSource() == save){
			save();
		}
	}
		
	public void nicht_geld(){
		
		Object[] options ={"OK"};
		
		JOptionPane.showOptionDialog(null,"Nicht genügend Geld","Informationen/Erklärung",JOptionPane.DEFAULT_OPTION,JOptionPane.PLAIN_MESSAGE,null,options,options[0]);
	}
	
	public void zu_viel(){
		
		Object[] options ={"OK"};
		
		JOptionPane.showOptionDialog(null,"Maximum Ereicht","Informationen/Erklärung",JOptionPane.DEFAULT_OPTION,JOptionPane.PLAIN_MESSAGE,null,options,options[0]);
	}
	public void save(){
		
	}
	
}
```

aber er zeig mir die werte nicht an:

```
double[] steigern_sec = {0.5, 1, 2.5, 7.3, 19.7, 37.6, 69.75, 99.1, 130, 205.3 };
	double[] steigern_pro = {1,1.5,2.5,3,4.5,6,9,};
	double[] kosten = { 100, 500, 5600, 18000, 40000, 240000, 400000, 950000, 1200000, 1900000 };
	double[] kosten2 = { 5000, 8000, 15000, 40000, 80000, 150000, 190000,};
```

und wenn man denn Button"+" drückt zählt er zwar "anzahl" hoch aber er zieht nichts von "geld" ab.


----------



## VfL_Freak (13. Mrz 2015)

Erstens:

```
double[] steigern_sec = {0.5, 1, 2.5, 7.3, 19.7, 37.6, 69.75, 99.1, 130, 205.3 };
double[] steigern_pro = {1,1.5,2.5,3,4.5,6,9,};
```
Du hast hier Arrays mit double-Werten!
Die Methode "drawString" erwartet aber als ersten Parameter einen String!
mit

```
""+steigern_sec[nn]
```
wird das auch nicht klappen, Du solltest die double besser mit "toString" in die passende Form bringen!


```
double[] kosten = { 100, 500, 5600, 18000, 40000, 240000, 400000, 950000, 1200000, 1900000 };
double[] kosten2 = { 5000, 8000, 15000, 40000, 80000, 150000, 190000,};
```
Warum sind dies denn überhaupt double-Arrays, wenn dann doch nur Integer-Werte drin stehen?
BTW: 'geld' und 'geld_sec' sind auch double, aber mit Integer initialisiert ....

Mir ist auch offen gestanden nicht klar, was die ganze Rechnerei bezwecken soll !!

Gruß Klaus


----------



## anfänger1542 (13. Mrz 2015)

oke ich erklär das mal ganz kurz aber zu erst es ist nur ein Programm zum testen und nichts wirklich sinnvolles:

also man fängt an mit 200 geld und 0 geld pro seconde.
mit dem vorhandenen geld kann man sich Upgrades kaufen um geld_sec zu erhöhen. wenn geld_sec erhöht ist rechnet ein Timer jede seconde geld * geld_sec und so bekommt man mehr geld womit man sich mehr Upgrades kaufen kann um noch mehr geld_sec zubekommen.

so viel zu dem "Spiel Prinzip".

und das was noch nicht funktioniert ist das er mir steigern_sec,steigern_sec,kosten und kosten2 nicht ausgibt. um beim Button klick passiert auch nix ausehr das Anzahl und anzahl2 hoch gezählt wird


----------



## VfL_Freak (13. Mrz 2015)

hmm, was auch dann "geld_sec" bedeuten soll ....

Hast Du denn überhaupt meine vorherigen Hinweise zu den double-Werten gelesen ???
Du kannst einfach wild mit Datentypen und Daten rumhantieren !!

Gruß Klaus


----------



## Saheeda (13. Mrz 2015)

@anfänger
Das heißt, du willst sowas in der Art bauen, nur halt mit Geld?
http://clickortre.at/#/


----------



## anfänger1542 (13. Mrz 2015)

geld_sec hat zum beispiel nach einem Upgrade denn wert 0.5. Somit wird jede Seconde "geld" + "geld_sec" addiert.

Natürlich hab ich deinen Hinweis gelesen und beachtet. 
aber wenn ich jetzt die double werte in Strings umwandel kann ich doch nicht mehr damit rechnen oder??
aber wenn doch wie sieht diese Umwandlung dann aus?

P.S:
Ich bin euch dank bar für die Hilfe und für eurere Geduld mir mir 

Grüße David


----------



## VfL_Freak (13. Mrz 2015)

Moin,



anfänger1542 hat gesagt.:


> Ich bin euch dank bar für die Hilfe und für eurere Geduld mir mir


Meine geht offengestanden so langsam zu Ende - aber zum Glück habe ich nur nocheine gute Stunde bis zunm Wochenende :bae:



anfänger1542 hat gesagt.:


> geld_sec hat zum beispiel nach einem Upgrade denn wert 0.5. Somit wird jede Seconde "geld" + "geld_sec" addiert.


aha - erklärt zwar noch immer noch nicht den Sinn und Zweck des Ganzen, aber bitte ....



anfänger1542 hat gesagt.:


> Natürlich hab ich deinen Hinweis gelesen und beachtet.


Ok, gelesen vielleicht, aber beachtet ?????



anfänger1542 hat gesagt.:


> aber wenn ich jetzt die double werte in Strings umwandel kann ich doch nicht mehr damit rechnen oder??


Doch, Du sollst ja auch nicht den Datentyp ansich ändern, sondern nur die Werte für die Anzeige entsprechend aufbereiten! Sprich die korrekte Übergabe an "drawString" !!!



anfänger1542 hat gesagt.:


> aber wenn doch wie sieht diese Umwandlung dann aus?


Habe ich doch zuvor geschrieben "meinDoubleWert.toString()" ...

Bei solchen Fragen hilft immer ein Blick in die API (Java Platform SE 7)!!
Sorry, aber ich habe ohnehin den Eindruck, dass Dir jede Menge Grundwissen fehl.

Vielleicht versuchst Du Dich besser erstmal an kleineren Augaben oder versuchst zumindest das Ganze step-by-step aufzubauen und nicht gleich alles auf einmal zu wollen.

Hast Du Dir mal theoretisch überlegt, was Dein Programm können soll und wie man es dadfür aufbaut?
Ich habe  das Konzept rsp. den Sinn und Zweck des Ganzen immer noch wirklich verstanden (außer das irgendwie mit Geld rumgerechnet werden soll) ..... :noe:

Gruß Klaus


----------



## tffasse (13. Mrz 2015)

Vielleicht solltest du das ganze auch erstmal als Konsolenanwendung entwickeln und die Berechnungen testen und anschließend das Programm mit einer grafischen Oberfläche erweitern. :bae:
Denn wie Vfl_Freak schon geschrieben hat, sieht es so aus, als ob dir gewisse Grundkenntnisse fehlen und dann direkt mit einer grafischen Oberfläche zu arbeiten macht IMHO nicht wirklich viel Sinn. :bahnhof:


----------

