Advertisement
Filip_Markoski

1.3 Низа од цели броеви (Integer[])

Oct 15th, 2017
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.33 KB | None | 0 0
  1. import java.io.ByteArrayInputStream;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import java.util.Arrays;
  5. import java.util.Random;
  6. import java.util.Scanner;
  7.  
  8. public class IntegerArrayTester {
  9.  
  10.     public static void main(String[] args) {
  11.         Scanner scanner = new Scanner(System.in);
  12.         String s = scanner.nextLine();
  13.         IntegerArray ia = null;
  14.         switch (s) {
  15.         case "testSimpleMethods":
  16.             ia = new IntegerArray(generateRandomArray(scanner.nextInt()));
  17.             testSimpleMethods(ia);
  18.             break;
  19.         case "testConcat":
  20.             testConcat(scanner);
  21.             break;
  22.         case "testEquals":
  23.             testEquals(scanner);
  24.             break;
  25.         case "testSorting":
  26.             testSorting(scanner);
  27.             break;
  28.         case "testReading":
  29.             testReading(new ByteArrayInputStream(scanner.nextLine().getBytes()));
  30.             break;
  31.         case "testImmutability":
  32.             int a[] = generateRandomArray(scanner.nextInt());
  33.             ia = new IntegerArray(a);
  34.             testSimpleMethods(ia);
  35.             testSimpleMethods(ia);
  36.             IntegerArray sorted_ia = ia.getSorted();
  37.             testSimpleMethods(ia);
  38.             testSimpleMethods(sorted_ia);
  39.             sorted_ia.getSorted();
  40.             testSimpleMethods(sorted_ia);
  41.             testSimpleMethods(ia);
  42.             a[0] += 2;
  43.             testSimpleMethods(ia);
  44.             ia = ArrayReader.readIntegerArray(new ByteArrayInputStream(integerArrayToString(ia).getBytes()));
  45.             testSimpleMethods(ia);
  46.             break;
  47.         }
  48.         scanner.close();
  49.     }
  50.  
  51.     static void testReading(InputStream in) {
  52.         IntegerArray read = ArrayReader.readIntegerArray(in);
  53.         System.out.println(read);
  54.     }
  55.  
  56.     static void testSorting(Scanner scanner) {
  57.         int[] a = readArray(scanner);
  58.         IntegerArray ia = new IntegerArray(a);
  59.         System.out.println(ia.getSorted());
  60.     }
  61.  
  62.     static void testEquals(Scanner scanner) {
  63.         int[] a = readArray(scanner);
  64.         int[] b = readArray(scanner);
  65.         int[] c = readArray(scanner);
  66.         IntegerArray ia = new IntegerArray(a);
  67.         IntegerArray ib = new IntegerArray(b);
  68.         IntegerArray ic = new IntegerArray(c);
  69.         System.out.println(ia.equals(ib));
  70.         System.out.println(ia.equals(ic));
  71.         System.out.println(ib.equals(ic));
  72.     }
  73.  
  74.     static void testConcat(Scanner scanner) {
  75.         int[] a = readArray(scanner);
  76.         int[] b = readArray(scanner);
  77.         IntegerArray array1 = new IntegerArray(a);
  78.         IntegerArray array2 = new IntegerArray(b);
  79.         IntegerArray concatenated = array1.concat(array2);
  80.         System.out.println(concatenated);
  81.     }
  82.  
  83.     static void testSimpleMethods(IntegerArray ia) {
  84.         System.out.print(integerArrayToString(ia));
  85.         System.out.println(ia);
  86.         System.out.println(ia.sum());
  87.         System.out.printf("%.2f\n", ia.average());
  88.     }
  89.  
  90.  
  91.     static String integerArrayToString(IntegerArray ia) {
  92.         StringBuilder sb = new StringBuilder();
  93.         sb.append(ia.length()).append('\n');
  94.         for (int i = 0; i < ia.length(); ++i)
  95.             sb.append(ia.getElementAt(i)).append(' ');
  96.         sb.append('\n');
  97.         return sb.toString();
  98.     }
  99.  
  100.     static int[] readArray(Scanner scanner) {
  101.         int n = scanner.nextInt();
  102.         int[] a = new int[n];
  103.         for (int i = 0; i < n; ++i) {
  104.             a[i] = scanner.nextInt();
  105.         }
  106.         return a;
  107.     }
  108.  
  109.  
  110.     static int[] generateRandomArray(int k) {
  111.         Random rnd = new Random(k);
  112.         int n = rnd.nextInt(8) + 2;
  113.         int a[] = new int[n];
  114.         for (int i = 0; i < n; ++i) {
  115.             a[i] = rnd.nextInt(20) - 5;
  116.         }
  117.         return a;
  118.     }
  119.  
  120. }
  121.  
  122. final class IntegerArray {
  123.     private Integer arr[];
  124.     IntegerArray(int a[]) {
  125.         arr = new Integer[a.length];
  126.         for (int i = 0; i < a.length; i++) {
  127.             arr[i] = a[i];
  128.         }
  129.     }
  130.     IntegerArray(Integer a[]) {
  131.         for (int i = 0; i < a.length; i++) {
  132.             arr[i] = a[i];
  133.         }
  134.     }
  135.  
  136.     public int length() {
  137.         return arr.length;
  138.     }
  139.     public int getElementAt(int i) {
  140.         if (0 <= i  && i <= length() - 1) {
  141.             return arr[i];
  142.         } else {
  143.             return -1;
  144.         }
  145.     }
  146.     public int sum() {
  147.         int sum = 0;
  148.         for (int i = 0; i < arr.length; i++) {
  149.             sum += arr[i];
  150.         }
  151.         return sum;
  152.     }
  153.     public double average() {
  154.         return (double) sum() / length();
  155.     }
  156.    
  157.     public void swap(Integer a, Integer b) {
  158.         Integer temp = a;
  159.         a = b;
  160.         b = temp;
  161.     }
  162.    
  163.     public IntegerArray getSorted() {
  164.         int len = length();
  165.          for (int i = 0; i < len-1; i++) {
  166.             for (int j = 0; j < len-i-1; j++) {
  167.                 if (arr[j].compareTo(arr[j+1]) > 0) {
  168.                     swap(arr[j], arr[j+1]);
  169.                 }
  170.             }
  171.         }
  172.          return new IntegerArray(arr);
  173.     }
  174.  
  175.     public IntegerArray concat(IntegerArray ia) {
  176.         int len = length();
  177.         int ialen = ia.length();
  178.         int both[] = new int [len + ialen];
  179.         for (int i = 0; i < len; i++) {
  180.             both[i] = arr[i];
  181.         }
  182.         for (int i = len; i < len + ialen; i++) {
  183.             both[i] = ia.getElementAt(i);
  184.         }
  185.         return new IntegerArray(both);
  186.     }
  187.     @Override
  188.     public String toString() {
  189.         return Arrays.toString(arr);
  190.     }
  191.  
  192.     @Override
  193.     public boolean equals(Object obj) {
  194.         if (this == obj) { return true; }
  195.         if (obj == null) { return false; }
  196.         if (getClass() != obj.getClass()) { return false; }
  197.              
  198.         IntegerArray numbers = (IntegerArray) obj;
  199.         if (arr.length != numbers.length()) {
  200.             return false;
  201.         }
  202.         for (int i = 0; i < arr.length; i++) {
  203.             if (!arr[i].equals(numbers.getElementAt(i))) {
  204.                 return false;
  205.             }
  206.         }
  207.         return true;
  208.     }
  209.    
  210. }
  211.  
  212. class ArrayReader {
  213.     public static IntegerArray readIntegerArray(InputStream input) {
  214.         Scanner scanner = new Scanner(input);
  215.         int len = scanner.nextInt();
  216.         int numbers[] = new int[len];
  217.         for (int i = 0; i < len; i++) {
  218.             numbers[i] = scanner.nextInt();
  219.         }
  220.         return new IntegerArray(numbers);
  221.     }
  222. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement