Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.ByteArrayInputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.util.Arrays;
- import java.util.Random;
- import java.util.Scanner;
- class ArrayReader {
- public static IntegerArray readIntegerArray(InputStream input)
- {
- Scanner scanner= new Scanner(input);
- int n=scanner.nextInt();
- int a[]=new int[n];
- for(int i=0;i<n;i++)
- a[i]=scanner.nextInt();
- scanner.close();
- return new IntegerArray(a);
- }
- }
- final class IntegerArray {
- private int array[];
- public IntegerArray(int a[]) {
- array=a.clone();
- }
- public int length()
- {
- return array.length;
- }
- public int getElementAt(int i)
- {
- return array[i];
- }
- public int sum()
- {
- int suma=0;
- for(int i=0;i<array.length;i++)
- suma+=array[i];
- return suma;
- }
- public double average()
- {
- return (double)sum()/array.length;
- }
- public IntegerArray getSorted()
- {
- int a[];
- a=array.clone();
- for(int i=0;i<array.length;i++)
- {
- for (int j=i+1;j<array.length;j++)
- {
- if(a[i]>a[j])
- {
- int temp=a[j];
- a[j]=a[i];
- a[i]=temp;
- }
- }
- }
- return new IntegerArray(a);
- }
- public IntegerArray concat(IntegerArray ia)
- {
- int nova[] = new int[array.length+ia.length()];
- for(int i=0;i<array.length;i++)
- nova[i]=array[i];
- for(int i=array.length;i<nova.length;i++)
- nova[i]=ia.getElementAt(i-array.length);
- return new IntegerArray(nova);
- }
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- IntegerArray other = (IntegerArray) obj;
- if (!Arrays.equals(array, other.array))
- return false;
- return true;
- }
- public String toString()
- {
- String temp;
- temp="[";
- for(int i=0;i<array.length-1;i++)
- temp+=array[i]+", ";
- temp+=array[array.length-1]+"]";
- return temp;
- }
- }
- public class IntegerArrayTester {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- String s = scanner.nextLine();
- IntegerArray ia = null;
- switch (s) {
- case "testSimpleMethods":
- ia = new IntegerArray(generateRandomArray(scanner.nextInt()));
- testSimpleMethods(ia);
- break;
- case "testConcat":
- testConcat(scanner);
- break;
- case "testEquals":
- testEquals(scanner);
- break;
- case "testSorting":
- testSorting(scanner);
- break;
- case "testReading":
- testReading(new ByteArrayInputStream(scanner.nextLine().getBytes()));
- break;
- case "testImmutability":
- int a[] = generateRandomArray(scanner.nextInt());
- ia = new IntegerArray(a);
- testSimpleMethods(ia);
- testSimpleMethods(ia);
- IntegerArray sorted_ia = ia.getSorted();
- testSimpleMethods(ia);
- testSimpleMethods(sorted_ia);
- sorted_ia.getSorted();
- testSimpleMethods(sorted_ia);
- testSimpleMethods(ia);
- a[0] += 2;
- testSimpleMethods(ia);
- ia = ArrayReader.readIntegerArray(new ByteArrayInputStream(integerArrayToString(ia).getBytes()));
- testSimpleMethods(ia);
- break;
- }
- scanner.close();
- }
- static void testReading(InputStream in) {
- IntegerArray read = ArrayReader.readIntegerArray(in);
- System.out.println(read);
- }
- static void testSorting(Scanner scanner) {
- int[] a = readArray(scanner);
- IntegerArray ia = new IntegerArray(a);
- System.out.println(ia.getSorted());
- }
- static void testEquals(Scanner scanner) {
- int[] a = readArray(scanner);
- int[] b = readArray(scanner);
- int[] c = readArray(scanner);
- IntegerArray ia = new IntegerArray(a);
- IntegerArray ib = new IntegerArray(b);
- IntegerArray ic = new IntegerArray(c);
- System.out.println(ia.equals(ib));
- System.out.println(ia.equals(ic));
- System.out.println(ib.equals(ic));
- }
- static void testConcat(Scanner scanner) {
- int[] a = readArray(scanner);
- int[] b = readArray(scanner);
- IntegerArray array1 = new IntegerArray(a);
- IntegerArray array2 = new IntegerArray(b);
- IntegerArray concatenated = array1.concat(array2);
- System.out.println(concatenated);
- }
- static void testSimpleMethods(IntegerArray ia) {
- System.out.print(integerArrayToString(ia));
- System.out.println(ia);
- System.out.println(ia.sum());
- System.out.printf("%.2f\n", ia.average());
- }
- static String integerArrayToString(IntegerArray ia) {
- StringBuilder sb = new StringBuilder();
- sb.append(ia.length()).append('\n');
- for (int i = 0; i < ia.length(); ++i)
- sb.append(ia.getElementAt(i)).append(' ');
- sb.append('\n');
- return sb.toString();
- }
- static int[] readArray(Scanner scanner) {
- int n = scanner.nextInt();
- int[] a = new int[n];
- for (int i = 0; i < n; ++i) {
- a[i] = scanner.nextInt();
- }
- return a;
- }
- static int[] generateRandomArray(int k) {
- Random rnd = new Random(k);
- int n = rnd.nextInt(8) + 2;
- int a[] = new int[n];
- for (int i = 0; i < n; ++i) {
- a[i] = rnd.nextInt(20) - 5;
- }
- return a;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement