import java.util.Random; public class Ex2{ //Gravitationskostant public final static double G = 9.82; // Skriv en metod som tar emot två heltalsparametrar som anger minsta och största värdet. // returnera sedan ett slumpat heltalsvärde som ligger mellan de angivna minsta och största värdet. // undersök klasserna Math och Random vilka innehåller metoder som kan vara till hjälp public static int getRand( int min, int max){ Random rg = new Random(); int slumpTal = rg.nextInt( (max - min +1) ) + min; return slumpTal; } // Skriv en metod som tar 3 heltals parametrar och returnerar deras medelvärde. public static int calcAvarage1( int a, int b, int c){ return (a + b + c)/3; } // Metoden ovan ger inte ett exakt svar. Vad beror detta på? // Gör de förändringar som behövs för koden i metoden, parametrar och returvärde för att ett exakt // medelvärde skall beräknas. Tänk på att datatyper kan behövas ändras på även i metodsignaturen. public static double calcAvarage2( int a, int b, int c){ return (((double) a) + b + c) / 3; } // Skriv en metod som tar emot en godtyckligt stor heltals array och sedan beräknar medelvärde. // Svaret på beräkningen skall returneras. public static double calcAvarage3( int [] intArray ){ double sum= 0; for( int i: intArray ){ sum += i; } return sum/intArray.length; } // Skapa en metod som slumpar värden i en array( använd arrayen som kallas "arr" nedan i metoden). // beräkna sedan medelvärdet på alla värden i arrayen arr och skriv ut på skärmen. // Använd metoderna getRand och calcAverage3 som du skapat ovan. public static void calcAverageFromRandomArray(){ int [] arr = new int[100]; for( int i=0; i "leftValue==rightValue" ? // Efter att du gett svar på detta så definera "lika värde" som att flyttalen // endast skiljer åt med 0.001 (med detta menas att rightValue och //leftValue är lika om de endast skiljer med 0.001). public static boolean compare( double leftValue, double rightValue ){ final double eps= 0.001; return Math.abs( leftValue - rightValue ) < eps; } // Skriv en metod som konverterar en vinkel som är i Grader // och returnerar en vinkel som är i Radianer public static double toRadian( double angle ){ return Math.toRadians(angle); } // Skriv en metod som utför beräkningen [(hastighet^2)* (sin( vinkel ))^2] / (2 * Gravitationskonstanten). // parametern vinkel som kallas rad nedan skall ta emot ett värde som är i Radianer. // Gravitationskonstanten är definierat högst upp i klassen som G(Använd denna). // Svaret på beräkningen returneras naturligtvis som returvärde. // Använd dig av lämpliga metoder och konstanter från java.lang.Math för att utföra beräkningarna. public static double calcHight( double rad, double velocity ){ double numerator = (Math.pow(velocity, 2) * Math.pow((Math.sin( rad )), 2)); double denominator = (2 * G); double hight = numerator / denominator; return hight; } // Skriv en metod som utför beräkningen [(hastighet^2)* sin( 2 * vinkel ) ] / (Gravitationskonstanten). // parametern vinkel som kallas rad nedan skall ta emot ett värde som är i Radianer. // Gravitationskonstanten är definierat högst upp i klassen som G(Använd denna). // Svaret på beräkningen returneras naturligtvis som returvärde. // Använd dig av lämpliga metoder och konstanter från java.lang.Math för att utföra beräkningarna. public static double calcDistance( double rad , double velocity ){ double numerator = (Math.pow(velocity, 2) * (Math.sin( rad * 2 ))); double denominator = (G); double distance = numerator / denominator; return distance; } // Använd dig av tre ovan nämnda metoder för att göra en utskrift där kasthöjd och kastlängd visas. // Parametrar till metoden skall vara en vinkel i Grader samt en hastighet. // Tänk på att vinkeln skall konverteras till radianer innan den kan användas i beräkningsmetoderna ovan. public static void printHightAndDistance( double angle, double velocity ){ double hight = calcHight( toRadian(angle), velocity ); double distance = calcDistance( toRadian(angle), velocity); String output = String.format( "When the angel is %.2f degres and the velocity is %.2f\n the higt becomes %.2f and the distance %.2f.",angle, velocity, hight, distance); System.out.println( output ); } public static void printArray( int[] chArray ){ for( int c: chArray ){ System.out.print(c + " "); } System.out.println(); } public static void main( String[] args ){ System.out.println("\n------------------------ Exercise 2 \n"); System.out.println("------------------------ getRand ------------------------") ; System.out.println("Test calls to getRand()"); int max=10, min= -10; boolean isInRange = true; final boolean PRINT_RANDOM_NUMBERS= false; for( int i= min; i < max; i++){ min= i; for( int j=i; j < max; j++ ){ int randomValue = getRand( i, j); if(PRINT_RANDOM_NUMBERS){ System.out.println( "Min: "+ i + "\t randValue: " + randomValue + "\t MaxValue " + j); } if( randomValue < i || randomValue > j ){ System.out.println("min value is: " + i + " and max value is: " + max + " getRand-> " + randomValue); isInRange= false; break; } } if(!isInRange){ break; } } if(isInRange){ System.out.println("The funktion getRandom generates numbers within the range specified"); }else{ System.out.println("The funktion getRandom DOES NOT ALWAYS generate numbers within the range " + min + " and " + max + "."); } System.out.println(); System.out.println("------------------------ calcAvarage ------------------------") ; int a= 1, b= 2, c= 4; System.out.println(" a= " + a + " b= " + b + " c= " + c); System.out.println("Calculating (a + b + c)/3"); System.out.println("Using calcAvarage1 -> " + calcAvarage1(a, b, c) ); System.out.println("Using calcAvarage2 -> " + calcAvarage2(a, b, c) ); System.out.println(); int [] arr = { 1, 2, 3, 4, 6 }; System.out.print("int array \"arr\": "); printArray(arr); System.out.println("Using clacAvarage3 ->" + calcAvarage3(arr) ); System.out.println(); calcAverageFromRandomArray(); System.out.println(); System.out.println("------------------------ calcAvarage ------------------------") ; double dA=10.001, dB=10.000, dC= 14.99; System.out.println( "dA= " + dA + " dB=" +dB ); if( compare(dA,dB) ){ System.out.println("Talen är lika"); }else{ System.out.println("Talen är OLIKA"); } System.out.println(); System.out.println( "dA= " + dA + " dC=" +dC ); if( compare(dA,dC) ){ System.out.println("Talen är lika"); }else{ System.out.println("Talen är OLIKA"); } System.out.println(); System.out.println("------------------------ Throwing calculations ------------------------") ; double angle= 45; double velocity= 10; System.out.println(angle + " Degres are " + toRadian(angle) + " Radians"); System.out.println(); printHightAndDistance( angle, velocity ); System.out.println(); System.out.println("--------------------------------------------------------------------"); } }