TheRealL

Untitled

Dec 14th, 2011
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.89 KB | None | 0 0
  1. package nith.stream.lession_array;
  2.  
  3. import java.util.Arrays;
  4. import java.util.InputMismatchException;
  5. import java.util.Scanner;
  6.  
  7. /*
  8.  * Denne klassen tar input fra brukeren 5 ganger, sorterer etter hvilkent tall som er det største
  9.  * Og skriver dette deretter ut.
  10.  *
  11.  * Her kan dere også se et godt eksempel på forskjelden mellom Arrays og ikke Arrays i kodesammenheng.
  12.  *
  13.  * @author Arne Christian Blystad
  14.  */
  15. public class UserInputSorting {
  16.  
  17.     public static void main(String[] argv) {
  18.  
  19.         // Først uten bruk av arrays
  20.         System.out
  21.                 .println("Du må skrive inn 5 tall nå etterpå. Du klarer det håper jeg.");
  22.         mainNoArrays();
  23.  
  24.         // Så med bruk av arrays
  25.         System.out
  26.                 .println("Du må skrive inn 5 tall nå etterpå. Du klarer det håper jeg.");
  27.         mainWithArrays();
  28.     }
  29.  
  30.     /**
  31.      * Først uten bruk av arrays. Les denne koden og fortell meg hva dere
  32.      * tenker.
  33.      */
  34.     private static void mainNoArrays() {
  35.         // Vi vil ha 5 tall, alright.
  36.         int tall1, tall2, tall3, tall4, tall5;
  37.  
  38.         Scanner console = new Scanner(System.in);
  39.  
  40.         // Hent alle de forskjellige tallene.
  41.         tall1 = getInteger(console);
  42.         tall2 = getInteger(console);
  43.         tall3 = getInteger(console);
  44.         tall4 = getInteger(console);
  45.         tall5 = getInteger(console);
  46.  
  47.         /*
  48.          * For å gjøre det lett, så ønsker vi kun å hente det lavest, høyeste og
  49.          * gjennomsnittet. Skulle jeg listet opp alle tallene, så måtte vi ha
  50.          * 5^5 if/else statements...da blir jeg sittende her en stund.
  51.          */
  52.         int max = 0;
  53.         int min = Integer.MAX_VALUE;
  54.         int avg = 0;
  55.  
  56.         if (tall1 > max) max = tall1;
  57.         if (tall1 < min) min = tall1;
  58.  
  59.         if (tall2 > max) max = tall2;
  60.         if (tall2 < min) min = tall2;
  61.  
  62.         if (tall3 > max) max = tall3;
  63.         if (tall3 < min) min = tall3;
  64.  
  65.         if (tall4 > max) max = tall4;
  66.         if (tall4 < min) min = tall4;
  67.  
  68.         if (tall5 > max) max = tall5;
  69.         if (tall5 < min) min = tall5;
  70.  
  71.         avg = (tall1 + tall2 + tall3 + tall4 + tall5) / 5;
  72.  
  73.         // Phouf....endelig ferdig....Da var det å skrive det hele ut.
  74.         System.out.println("Det høyeste tallet var " + max
  75.                 + " og det laveste var " + min
  76.                 + " og gjennomsnittet...det var " + avg);
  77.  
  78.         /**
  79.          *
  80.          * My thoughts? For et jævla rot... -10DKP
  81.          *
  82.          */
  83.     }
  84.  
  85.     /**
  86.      * Her har vi da et eksempel MED arrays istede, så dere kan se forskjelden.
  87.      */
  88.     private static void mainWithArrays() {
  89.         // Arrays fungerer ved at vi definerer størrelsen på arrayen. Vi KAN
  90.         // predefinere innholdet, men mer om dette under streamen.
  91.         int[] tall = new int[5];
  92.  
  93.         Scanner console = new Scanner(System.in);
  94.  
  95.         // Og dette var hele koden som var nødvendig for å spør brukeren 5
  96.         // ganger.
  97.         for (int i = 0; i < tall.length; i++)
  98.             tall[i] = getInteger(console);
  99.  
  100.         // Også sorteringa...Her har vi mye mer options.
  101.         // Men vi gjør det samme som i det forrige programmet.
  102.         int min = Integer.MAX_VALUE, max = 0, avg = 0, sum = 0;
  103.  
  104.         for (int i = 0; i < tall.length; i++) {
  105.             if (tall[i] > max) max = tall[i];
  106.             if (tall[i] < min) min = tall[i];
  107.             sum += tall[i];
  108.         }
  109.  
  110.         avg = sum / tall.length;
  111.  
  112.         System.out.println("Det høyeste tallet var " + max
  113.                 + " og det laveste var " + min
  114.                 + " og gjennomsnittet...det var " + avg);
  115.  
  116.         // Men vent...her kan vi gjøre mer!
  117.  
  118.         // FIXME: Warning! Dette er ting vi ikke har lært enda, og det kan hende
  119.         // at man spesifikt på eksamen, får i oppgave å IKKE bruke dette. Så er
  120.         // dere advart :)
  121.         Arrays.sort(tall);
  122.  
  123.         System.out.println("Sortert array: " + Arrays.toString(tall));
  124.     }
  125.  
  126.     private static int getInteger(Scanner input) {
  127.         int output = 0;
  128.         boolean outputCorrect = false;
  129.  
  130.         while (!outputCorrect)
  131.             try {
  132.                 System.out.print("Skriv inn ett tall: ");
  133.                 output = input.nextInt();
  134.                 outputCorrect = true;
  135.             } catch (InputMismatchException e) {
  136.                 input.next();
  137.                 System.out.println("Du må skrive inn et tall. Prøv igjen.");
  138.             }
  139.  
  140.         return output;
  141.     }
  142.  
  143. }
Advertisement
Add Comment
Please, Sign In to add comment