2016-08-03 8 views
1

Ich habe versucht, ein Programm zu erstellen, das n Anzahl der Eingabe in einer Schleife und in der Lage, Ausgabe in aufsteigender Reihenfolge anzeigen kann. Das Hauptthema des Programms ist es sollte keine Arrays verwenden.wie n Zahlen eingegeben und in aufsteigender Reihenfolge ohne Array

Ich habe es versucht, indem Sie ein Programm erstellen, das die Eingabe nimmt und die kleinste Zahl zuerst, dann die zweitkleinste und die drittkleinste und so weiter anzeigt. Aber ich bin neu in der Programmierung, also könnte mein Programm nur wie 1. kleinster tun und es funktioniert nicht.

Ich sah auch Heap-Datenstruktur in einer der ähnlichen Fragen, aber konnte nicht herausfinden, wie es ohne Arrays arbeiten kann.

Bitte helfen Sie mir, wie können wir Heap-Datenstruktur verwenden oder geben Sie mir einen guten Vorschlag, es zu tun.

+0

Warum können Sie Arrays nicht verwenden? – hmicn

+0

Es sollte keine Arrays in welcher Art und Weise verwenden? Speichern der Zahlen? Die Nummern sortieren? – smac89

+0

Speichern und Sortieren – Slick

Antwort

1
List<Integer> list = new LinkedList<Integer>(); 
Scanner scanner = new Scanner(System.in); 

while (true) { 
    System.out.print("Enter a number, -1 to exit: "); 
    int num = scanner.nextInt(); 

    if (num == -1) break; 

    list.add(num); 
} 

// sort the list (ascending) 
Collections.sort(list); 

// output the list 
for (Integer val : list) { 
    System.out.println(val); 
} 
+2

Eine 'ArrayList' verwendet Arrays ... – RealSkeptic

+0

@RealSkeptic Nun, Sie sind sicherlich ein echter Skeptiker! –

+0

Um, eine ArrayList ist im Grunde nur ein Array mit einem Objekt an der Spitze. Ist das wirklich möglich? – ControlAltDel

1

Sie könnten Streams verwenden:

StreamSupport.stream(
      Spliterators.spliteratorUnknownSize(new Scanner(System.in), Spliterator.ORDERED), 
      false) 
      .limit(10) 
      .sorted() 
      .forEach(System.out::println); 
0

Verwenden SortedSet für Standard-Sortierung, ohne Duplikate. (Nicht, wenn Duplikate hier benötigt werden!)

SortedSet<Integer> sortedSet = new TreeSet<Integer>(); 
    Scanner scanner = new Scanner(System.in); 

    while (true) { 
     System.out.print("Enter a number, -1 to exit: "); 
     int num = scanner.nextInt(); 
     if (num == -1) 
      break; 
     sortedSet.add(num); 
    } 
    System.out.println(sortedSet); 
Verwandte Themen