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:
voideinfachvergleichen(){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
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
// erste Klasse wo der Benutzer die Anzahl der FRagen eingeben kann classFrage{staticintAnzahlFragen;staticStringQuiz[]=newString[0];Frage(int k){AnzahlFragen=k;Quiz=newString[k];}voidfrageEintragen(){// 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
*/classFrageStellenextendsFrage{staticint jaAnt;staticint neinAnt;String jaNein []={"ja","nein"};StringAntworten[]=newString[Quiz.length];staticint coolArray [][]=newint[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'
*/voideinfachvergleichen(){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);}elseif(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 */classStatistik{staticvoiddrucken(){
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");}}}publicclassUmfrage{// kleines Testprogramm publicstaticvoidmain(String[] args){char hilfswort='j';
IO.println("Fragen eingeben ");
IO.println("<------------------------>");FrageStellen k =newFrageStellen(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 ?
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 )
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
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...