Wie kann ich "enter" von der Console in Eclipse löschen?

kristinaD

Neues Mitglied
Die Aufgabe ist alle Personen über 30 zu printen. Das Problem ist nur dass es eine leere Zeile in der Console ist, wie kann ich das lösen ?
1664025582072.png

Java:
public class OpinionPoll {
    
    private static class Person{
        
        String name;
        int age;
        
        public String getName(){
            return name;
        }
        
        public int getAge(){
            return age;
            
        }
        
        Person(String n, int a){
            this.name = n;
            this.age = a;
        }   
        }
    
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = Integer.parseInt(sc.nextLine());
        List<Person> people = new ArrayList();

        String [] line = sc.nextLine().split(" ");
        
        for(int i = 0; i < n; i++) {
            Person person = new Person(line[0],
                    Integer.parseInt(line[1]));
            
            if(person.getAge() > 30) {
                people.add(person);
            }
                        
              line = sc.nextLine().split(" ");
            }
        
        
        people.sort(Comparator.comparing(Person::getName));       
        
        for(Person per: people) {
            System.out.println(per.getName() + " - " + per.getAge());
        }
        }       
    }
 
Das Problem ist, dass Du am Ende der Schleife eine Eingabe forderst. Also auch nachdem Du 3 Personen eingegeben hast, läufst Du noch einmal durch die Zeile 39.

Wie immer der klare Ratschlag: Überlege Dir immer erst genau, was getan werden soll. Formuliere es für Dich in Worte.
Und dann setzt Du das entsprechend um.

Was Du ja machen willst ist ein:
  • Frage nach der Anzahl der Eingaben.
  • Dann mach genau so oft:
--> Eingabe einer Zeile abfragen
--> Zeile aufteilen bei Leerzeichen
--> Person Instanz erzeugen und dann in der Liste speichern.

Wenn man sich etwas so direkt überlegt hat, dann kann man es auch genau so programmieren!

Und da ist dann:
- Dann mach genau so oft:
--> Eingabe einer Zeile abfragen
--> Zeile aufteilen bei Leerzeichen
--> Person Instanz erzeugen und dann in der Liste speichern.

eben etwas anderes als:
  • Eingabe einer Zeile abfragen
  • Dann mach genau so oft:
--> Zeile aufteilen bei Leerzeichen
--> Person Instanz erzeugen und dann in der Liste speichern.
--> Eingabe einer Zeile abfragen

Der Unterschied sollte deutlich geworden sein und ich hoffe, dass der Hinweis mit der besseren Überlegung, wie der Algorithmus auszusehen hat, Dir zukünftig hilft.
 
Das Problem ist, dass Du am Ende der Schleife eine Eingabe forderst. Also auch nachdem Du 3 Personen eingegeben hast, läufst Du noch einmal durch die Zeile 39.

Wie immer der klare Ratschlag: Überlege Dir immer erst genau, was getan werden soll. Formuliere es für Dich in Worte.
Und dann setzt Du das entsprechend um.

Was Du ja machen willst ist ein:
  • Frage nach der Anzahl der Eingaben.
  • Dann mach genau so oft:
--> Eingabe einer Zeile abfragen
--> Zeile aufteilen bei Leerzeichen
--> Person Instanz erzeugen und dann in der Liste speichern.

Wenn man sich etwas so direkt überlegt hat, dann kann man es auch genau so programmieren!

Und da ist dann:
- Dann mach genau so oft:
--> Eingabe einer Zeile abfragen
--> Zeile aufteilen bei Leerzeichen
--> Person Instanz erzeugen und dann in der Liste speichern.

eben etwas anderes als:
  • Eingabe einer Zeile abfragen
  • Dann mach genau so oft:
--> Zeile aufteilen bei Leerzeichen
--> Person Instanz erzeugen und dann in der Liste speichern.
--> Eingabe einer Zeile abfragen

Der Unterschied sollte deutlich geworden sein und ich hoffe, dass der Hinweis mit der besseren Überlegung, wie der Algorithmus auszusehen hat, Dir zukünftig hilft.
Vielen Dank für die detalierte Erklärung. Ich habe verstanden, wo das Problem ist.
 

Zurück
Oben