====== Introduction to Java ====== * Slides: {{ :did:roboclub:setup.pdf |Download}} ===== Software ===== * Please install the Java Development Kit first: [[http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html| Download]] * We will use professional IDE for Java programming called IntelliJ - please install it. It is available on Linux, Windows and Mac (download the Community Version): [[https://www.jetbrains.com/idea/download/|IntelliJ Idea IDE]] ===== Exercises ===== ==== Hello World program ==== public class Main{ public static void main(String [] argv){ System.out.println("Hello world!"); } } ==== Variables ==== public class Main{ public static void main(String [] argv){ String name = "Szymon"; double a = 5; double b = 6; System.out.println("Hello "+name+". I know that "+ a+"+"+b+"="+(a+b)); } } Try other mathematical operations. What about power? Try different types: int, double, float, boolean? ==== Arrays ==== public class Main{ public static void main(String [] argv){ String name = "Szymon"; double [] arrayOfNumbers = new double[4]; arrayOfNumbers[0] = 6; System.out.println("Hello "+name+ ". The first element in the array " + " is "+arrayOfNumbers[0]); } } Try print out other elements form the array. ==== If statements ==== public class Main{ public static void main(String [] argv){ String name = "Szymon"; double [] arrayOfNumbers = new double[4]; arrayOfNumbers[0] = 6; if(arrayOfNumbers[0] == 6){ System.out.println("Yes, it is 6"); }else if(arrayOfNumbers[0] != 6){ System.out.println("No it is not 6"); } } } Try other //if// statements. ==== Input ==== public class Main{ public static void main(String [] argv){ String name; int age; System.out.println("What is your name?"); Scanner scanner = new Scanner(System.in); name = scanner.nextLine(); System.out.println("What is your age?"); age = scanner.nextInt(); } } Try to add statement that will ask for the value of //pi// and print all the information out. ==== Input and If statements ==== public class Main{ public static void main(String [] argv){ int age; Scanner scanner = new Scanner(System.in); System.out.println("What is your age?"); age = scanner.nextInt(); if(age < 18){ System.out.println("Access denied") }else{ System.out.println("Access granted") } } } Try more if statements. (you are old, wrong number); Read password from the user and test if it is OK. This one is tricky. ==== Loops I ==== public class Main{ public static void main(String [] argv){ int age; Scanner scanner = new Scanner(System.in); while(true){ System.out.println("What is your age?"); age = scanner.nextInt(); if(age < 18){ System.out.println("Access denied") }else{ System.out.println("Access granted") } } } } Try to condition the loop on the value of age. ==== Loops II ==== public class Main{ public static void main(String [] argv){ double numbers [] = new double[5]; Scanner scanner = new Scanner(System.in); for(int i = 0; i < numbers.length; i++){ numbers[i] = scanner.nextInt(); } } } Use loop to print out the number that you read; Create a program that will print out multiplication table of given size; ==== Functions ==== public class Main{ public static void main(String [] argv){ double numbers [] = new double[5]; double numbers2D [][] = new double[5][3]; Scanner scanner = new Scanner(System.in); for(int i = 0; i < numbers.length; i++){ numbers[i] = scanner.nextInt(); } printOutTheArray(numbers); } public static void printOutTheArray(double [] array){ for(int i = 0; i < array.length; i++){ System.out.println(array[i]); } } } Add statement that will prompt the user for the next number. Use loop to print out the number that you read; Create a program that will print out multiplication table of given size; ===== The riddle ===== Write a program that solves the riddle. But now, assume that the sum of processors is 72. === Solution === public class Main{ public static void main(String [] argv){ int product= 36; int sums [][] = new int[product][4]; int sumIndex = 0; System.out.println("----------All possibilities --------"); for(int first = 1; first <= product; first++ ){ for(int second = first; second <=product/first; second++){ for(int third = second; third <= product/(first*second); third++){ if((first*second*third) == product) { System.out.println("|" + first + "|" + "|" + second + "|" + "|" + third + "||" + (first * second * third) + " -> " + (first + second + third)); sums[sumIndex][0] = first; sums[sumIndex][1] = second; sums[sumIndex][2] = third; sums[sumIndex][3] = first+second+third; sumIndex++; } } } } System.out.println("----------Ambiguous solutions--------"); int [][] ambs = findAmbiguous(sums); for(int i = 0; i < ambs.length && ambs[i][0] != 0;i++){ System.out.println("|" + ambs[i][0] + "|" + "|" + ambs[i][1] + "|" + "|" + ambs[i][2] + "||" + (ambs[i][0]+ambs[i][1]+ambs[i][2])); } System.out.println("----------Solution--------"); int [] solution = findMostPowerful(ambs); if(solution != null) { System.out.println("The solution is First: " + solution[0] + " second: " + solution[1] + " and third: " + solution[2]); } } public static int [][] findAmbiguous(int [][] sums){ int [][] ambiguous = new int[sums.length][3]; int ambIndex = 0; for(int i = 0; i < sums.length && sums[i][3] != 0;i++){ for(int j = i+1; j < sums.length && sums[j][3] != 0;j++){ if(sums[i][3] == sums[j][3]){ ambiguous[ambIndex][0] = sums[i][0]; ambiguous[ambIndex][1] = sums[i][1]; ambiguous[ambIndex][2] = sums[i][2]; ambIndex++; ambiguous[ambIndex][0] = sums[j][0]; ambiguous[ambIndex][1] = sums[j][1]; ambiguous[ambIndex][2] = sums[j][2]; ambIndex++; } } } return ambiguous; } public static int [] findMostPowerful(int [][] ambiguous){ for(int i = 0;i < ambiguous.length;i++){ if(ambiguous[i][0] > ambiguous[i][1] && ambiguous[i][0] > ambiguous[i][2]){ return ambiguous[i]; }else if(ambiguous[i][1] > ambiguous[i][0] && ambiguous[i][1] > ambiguous[i][2]){ return ambiguous[i]; }else if(ambiguous[i][2] > ambiguous[i][0] && ambiguous[i][2] > ambiguous[i][1]){ return ambiguous[i]; } } return null; } }