mehr Dimensionalen Array beschreiben

newbie2009

Bekanntes Mitglied
Ausgangslage/Idee:

ich erstelle einen zweidemensionalen array.
i

Java:
 int AnzahlFragen ; // wird vom benutzer eingegeben 

 int  coolArray [][]= new int [AnzahlFragen] [2];

//

Also ich möchte nun , dass in meinem Array folgende werte stehen : Array :
sprich in der ersten Dimension steht eine beliebige zahl x , und jetzt will ich je nach fall die eine 0 oder die andere 0 verändern.Sprich wenn der Benutzer ein ja eingibt,dann wird die erste 0 um 1 erhöht, wenn der Benutzer ein nein eingibt, dann wird die zweite 0 um eins erhöht.

Ich habe jetzt das ganze in einer switch- Anweisung gemacht, aber ich weiß nicht , wie ich explizit die eine 0 um 1 erhöhe und die andere um 1.

Java:
void einfachvergleichen(){
			for(int u=0;u<Quiz.length;u++){
				
				IO.println(Quiz[u]);
			char a=IO.readChar("ja oder nein?");
			switch(a){
			case 'j':jaAnt++;

			coolArray[u][0]= i;   // i wurde davor auf 0 gesetzt 

			System.out.println(coolArray[u][0]);
			break;
			case'n':neinAnt++;

			coolArray[u][1]= i;// i=0  

			System.out.println(coolArray[u][1]);
			break;
			default:IO.println("Sie haben eine unzulässige Antwort gegeben");
			}
			}
			IO.println(jaAnt);
		}

Das war meine idee, aber irgendwie klappt das nicht so ganz
 
ja ich möchte immer die Einträge erhöhen:



Fall 1.
der benutzer hat für die Frage u ein "ja" eingegeben :


Java:
[u]
[0]   --> dieses Feld soll  nun um eins erhöht werden 
[0]


Fall 2.
der benuter hat für die Frage ein "nein" eingegeben

Java:
[u]
[0]  
[0]  --> dieses Feld soll  nun um eins erhöht werden

und am ende möchte ich dann halt sagen gib mir die zahl aus die in den jeweiligen Felder steht.
 
Zuletzt bearbeitet:
Also abgesehen davon, was Du dort für Werte reinschreibst ist der Zugriff auf die Arrayfelder so schon in Ordnung. Was genau klappt denn nicht?
 
ich verstehe es nicht ganz woher der compiler nun weiß , dass er den Wert im genau diesen einem Feld um 1 erhöhen soll.
Das verwirrt mich noch im Moment total.
Der erhöht bei mir irgendwie ständig das selbe Feld , sprich wenn ich 2 ma ja eingebe und dann nein,
bekomme ich für
Java:
System.out.println(coolArray[u][0]);
3 raus und das stimmt ja nicht.
 
Java:
// erste Klasse wo der Benutzer die Anzahl der FRagen eingeben kann 
class Frage {
	
	static int AnzahlFragen;
	static String  Quiz [] =new String[0];
	
	
	
	Frage(int k){
		AnzahlFragen=k;
		Quiz=new String[k];
			
		
	
	
	}
	
	 void frageEintragen(){							// Benutzer trägt die Fragen ein , die dann später gestellt werden sollen 
		
	
	for(int j=0;j<Quiz.length;j++){
	
	
		Quiz[j]=IO.readString("Geben sie eine Frage ein ");
		
		
	}
}
	
	
	
	
	
}

/* FrageStellen ist die eigentliche Umfrage , denn hier werden die eingegebenen Fragen
 * und  wieder gestellt und die Anzahl der ja und nein Antworten wird notiert
 */


class FrageStellen extends Frage {
	

	
	
	static int jaAnt;
	static int neinAnt;
	String jaNein []= {"ja","nein"};
	String Antworten[] = new String [Quiz.length];
	static int  coolArray [][]= new int [AnzahlFragen] [2];
	

	
	FrageStellen(int k){
		super(k);
		
		
	}
	
	
	/*habe die methode doppelt, funktionieren beide, nur bei der einen kann man 
	 *  "ja" und " nein" eintippen und bei der ersten nur char 'j' und 'n'
	 */
	
		void einfachvergleichen(){
			
			int k=0;
			int i=0;
			
			for(int u=0;u<Quiz.length;u++){
				
				IO.println(Quiz[u]);
			char a=IO.readChar("ja oder nein?");
			switch(a){
			case 'j':jaAnt++;
			i++;
			coolArray[u][0]=i;
			
			System.out.println(coolArray[u][0]);
			break;
			case'n':neinAnt++;
			k++;
			coolArray[u][1]=k;
			System.out.println(coolArray[u][1]);
			break;
			default:IO.println("Sie haben eine unzulässige Antwort gegeben");
			}
			}
			IO.println(jaAnt);
		}
	
	//methode die strings als Antworten akzeptiert, war nicht gefragt aber egal :-)
void  vergleichen (){
		IO.println(jaNein[1]);
		for(int u=0;u<Quiz.length;u++){
				IO.println(Quiz[u]);
					Antworten[u]=IO.readString("Stimmen sie zu , ja oder nein ein");
						if(Antworten[u].equals(jaNein[0])){
								jaAnt++;
								IO.println("Anzahl der ja antworten");
								IO.println(jaAnt);
								 
	   
							} else if(Antworten[u].equals(jaNein[1])){
								IO.println("Anzahl der nein Antworten");
								neinAnt++;
								
								
								
							}else{
								IO.println("diese Antwort ist nich zulässig");
								u--;
							}

}
	}
	
	
	
	
	
	
}


/* klasse Statistik , die dazu dient, die ja und nein Antworten auszugeben und in 
Prozent darzustellen */


	class Statistik {
		
		
		
	
			
		
		
		static void drucken(){
			IO.println("anzahl der ja antworten ");
			IO.println(" betraget "+ FrageStellen.jaAnt);
			IO.print("in prozent sind das ");
			IO.println((double)FrageStellen.jaAnt/(FrageStellen.jaAnt+FrageStellen.neinAnt)*100+ " % ");
			IO.println("anzahl der nein antworten ");
			IO.println(" betraegt "+ FrageStellen.neinAnt);
			IO.print("in prozent sind das ");
			IO.println((double)FrageStellen.neinAnt/(FrageStellen.jaAnt+FrageStellen.neinAnt)*100 + " % ");
			int c = IO.readInt("welche Frage wollen sie wissen?");
			if(c<=FrageStellen.AnzahlFragen){
				
			
			IO.println("frage  nr " + c + " lautete "+ Frage.Quiz[c]+ " und wurde so oft mit ja beantwortet"+FrageStellen.coolArray[c][0]);
				
			}else{IO.println("sie haben eine nicht existierende frage eingegeben");
				
			}
		}
		
		
		
	}
	
	
	

public class Umfrage {
	
	
	
	
	// kleines Testprogramm 
	
	public static void main(String[] args) {
		
		
		
		char hilfswort='j';
		
		
		IO.println("Fragen eingeben  ");
		IO.println("<------------------------>");
		
		FrageStellen k = new FrageStellen(IO.readInt("geben sie die Anzahl der Fragen ein "));
		
		
		
	k.frageEintragen();
	
	while(hilfswort=='j'){
	k.einfachvergleichen();
	hilfswort=IO.readChar("weiterer Teilnehmer ja nein ?");
	}
		
	
		Statistik.drucken();
		
	
	}

}


das meiste müsste dir bekannt vorkommen 🙂
naja aber irgendwie geht jetzt nix mehr 😀😀 jetzt bekomme ich schon bei der eingabe der antworten boundofexception ???:L
vielleicht weil ich den Array jetzt auf static gesetzt habe? damit ich den in meiner Klasse Statistik benutzen kann ?
 
Zuletzt bearbeitet:
Das Problem ist (zB), dass Du Dein Array viel zu früh initialisierst. In dem Moment ist zB AnzahlFragen noch gar nicht bekannt und 0. Mach die Initialisierungen mal alle erst im Konstruktor. Das hilft zumindest schon mal ein wenig.
 
Soll denn Dein coolArray die Ja Nein Antworten über alle Teilnehmer sammeln oder soll es für jeden einzelnen Teilnehmer zurückgesetzt werden (so ist es im Moment bei Dir)?
Wenn Du auf das k und das i verzichtest und einfach nur den Arrayeintrag inkrementierst klappt das hier wunderbar über alle Teilnehmer. (Sprich Du hast dann für jede Frage stehen, wie oft ja und wie oft nein geantwortet wurde.)

So wie Du es hast, steht dann in jedem Feld, wie viele ja oder nein Antworten (aber auch nur das) bis zu diesem Zeitpunkt und für diesen Teilnehmer bis zu der Frage gefallen sind. Recht sinnlose Information meiner Meinung nach (deswegen fällt das Beschreiben auch nicht so einfach 😉 )
 
Zuletzt bearbeitet:
Es sollen eigentlich Fragen gestellt werden an beliebig viele Leute, und dann soll das Programm sagen , wie die jeweilige Frage , also wie oft diese mit ja beantwortet wurde und wie oft diese mit nein .
also ist es falsch wie ich es jetzt habe oder?
obwohl paar mal funktioniert das mit i und k , warum wäre das denn falsch?^^
sind doch beide static, sprich werden doch nich wieder auf 0 gesetzt oder?

hehe ok 🙂 zu irgendwas war doch der konstruktor zu gebrauchen 😀😀😀
 
Zuletzt bearbeitet:
also wenn die beiden felder als counter funktionieren sollen würde ich sie mit 0 initialisieren und dann einfach immer inkrementieren ganz ohne i und k...
 

Zurück
Oben