Java neue Variable für jeden Schleifendurchgang

Untaimed

Mitglied
Hi,
Erstens weiss ich nicht ob die Überschrift so treffend ist, aber das düfte kein Problem sein😳
Ich soll ein Programm schreiben, welches fragt wieviele Personen in einer (Schul-)Klasse sind und anschließend für jede Person einzeln fragen, welche Noten sie haben.
Die Ausgabe sieht ungefähr so aus:


Wieviele Schüler sind in der Klasse? 10 //Eingabe vom Benutzer

Bitte die Noten eingeben!
Schüler1: 5 //ebenfalls Eingabe vom Benutzer
Schüler2: 1
...
...
Schüler10: 1

Was ich berreits habe:

Java:
import java.util.Scanner;

public class schuelernoten {

  public static void main(String[] args) {
   Scanner sc = new Scanner(System.in);

    
   System.out.print("Bitte geben Sie die Anzahl der Schüler an: ");
   int anz_schueler = sc.nextInt();
   
   System.out.print("Bitte geben Sie die Note ein: ");
   int Note = sc.nextInt();
   
    int anz = 0; // für Personen-Nr.
  
      while(anz_mitglieder > 0){
      anz_schueler = anz_schueler -1;
      anz = anz + 1;

     System.out.print("Schueler " + (anz_schueler - anz_schueler) + anz + " " );
     int Person  = sc.nextInt();
     
     
   }
  

   
  }
}

Hiebei gibt er folgendes aus:
Schueler01:
Schueler02:
Schueler03:
...

Wie mache ich es aber, dass er für jeden Schueler ein neuen Integer anlegt.
Also für den ersten Schüler
Java:
int Person1 = sc.nextInt();
für den zweiten
Java:
int Person2 = sc.nextInt();
etc.

Ich hoffe ihr wisst was ich meine!
 
Zuletzt bearbeitet:
Hallo,

leg dir eine Klasse Schueler mit den Klassenvariablen nummer und note an.

ArrayList<Schueler> schueler = new ArrayList<Schueler>() als Member

In der while-Schleife:
schueler.add(new Schueler(nummer,note);

Nach der while-Schleife kannst du dann die Noten und die Nummern ausgeben mit

schueler.get(0).getNote();
schueler.get(12).getNummer();

usw.


Bei Fragen melden.

Grüße Oli
 
@Oli: vll führ solche Aufgabe etwas zu komplex... zb brauchts die Nummer nicht, die ist ja gleich dem index des arrays/collection

bisher ist auch nicht klar ob er die information nach dem eingeben noch braucht. Laut Beitrag gibt man die Anzahl der schüler ein und dann ihre Noten... mehr nicht ?!
 
Oder halt so:

Java:
import java.util.ArrayList;
import java.util.Scanner;

public class Schuelernoten {

	ArrayList<Schueler> schueler = new ArrayList<Schueler>();

	public static void main(String[] args) {
		new Schuelernoten();
	}

	public Schuelernoten() {
		Scanner sc = new Scanner(System.in);

		System.out.print("Bitte geben Sie die Anzahl der Schüler an: ");
		int anz_schueler = sc.nextInt();

		for (int i = 0; i < anz_schueler; i++) {
			System.out.print("Bitte geben Sie die Note ein: ");
			int Note = sc.nextInt();
			schueler.add(new Schueler(i, Note));
		}
		for (int i = 0; i < schueler.size(); i++) {
			System.out.println("Schueler " + schueler.get(i).getNummer()+" Note: "+schueler.get(i).getNote());
		}
	}

	public class Schueler {

		private int Nummer;
		private int Note;

		public Schueler(int nummer, int note) {
			setNummer(nummer);
			setNote(note);
		}

		public int getNummer() {
			return Nummer;
		}

		public void setNummer(int nummer) {
			Nummer = nummer;
		}

		public int getNote() {
			return Note;
		}

		public void setNote(int note) {
			Note = note;
		}
	}
}

Grüße Oli
 
Hi,

naja auch eine Schulübung sollte ein bisschen Sinn machen, insofern sollte man die Noten dann wenigsten ansehen können, die man eingegeben hat.
Sicher kann man das auch mit einem Array lösen, aber warum nicht gleich objektorientiert?

Grüße Oli
 
mhm... einiges unschön aber das erstmal egal.

ich bin immer noch der meinung zu viel für das Problem

Java:
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.print("Bitte geben Sie die Anzahl der Schüler an: ");
        int anzSchueler = sc.nextInt();
        int[] noten = new int[anzSchueler];
        for (int i = 0; i < anzSchueler; i++) {
            System.out.print("Bitte geben Sie die Note ein: ");
            noten[i] = sc.nextInt();
        }
        for (int i = 0; i < anzSchueler; i++) {
            System.out.println("Schueler " + i + " Note: " + noten[i]);
        }
    }
 
er sagt zuviel, nciht unschön und ich stimme dem zu. hier ist offensichtlich ein einfaches array die gute lösung
nicht nur das... Work in Constructor, Variablen sind groß geschrieben, ArrayList statt List bei der Deklaration, unnötige set Methode etc... aber wie gesagt - das ist hier erstmal egal.

man muss eben nicht alles in OOP zwingen imo
 
Was ist denn da unschön?


ein nachteil von arrays ist bekanntlich, dass die grösse beim anlegen bekannt sein muss. wenn diese grösse nicht bekannt ist, dann ist z.b. ein arraylist zweckmässiger. nur, in der problemstellung wird die anzahl der schüler erfasst, so dass das array angelegt werden kann.

übrigens, wie man mit arrays arbeitet, kann man hier nachlesen.
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben