13375k1133z Skrevet 2. september 2010 Del Skrevet 2. september 2010 holder på å lage et program som kan regne ut hvor lang distanse en gjenstand har falt på x antall sekund og omvendt. Jeg har klart å gjøre førstnevnte, sistnevnte var litt vanskeligere. Når jeg skal finne ut hvor langt en gjenstand har falt gitt tiden, må jeg ta kvadratroten av 2*distanse/9.81. I java har jeg skrevet følgende: double tid2 = System.out.println(Math.sqrt(2*distanse2/9,81)); dette gir feilmeldingen: sqrt(double) in java.lang.Math cannot be applied to (double,int) hva er årsaken til dette? Her er forøvrig hele kildekoden: import java.util.Scanner; // <- metode for å konvertere bytes til primitive verdier. public class Distanse_versjon2 { public static void main(String[] args) { Scanner tastatur = new Scanner(System.in); //skriver ut System.out.println("Angi tid i sekunder: "); //leser tastaturet double tid = tastatur.nextDouble(); //Gjør regneoperasjoner. Math.pow, opphøyer verdien i tid i 2 (tid^2) double distanse = (9.81* Math.pow(tid,2)/2.0); //skriver ut resultat System.out.printf(" Distansen i meter etter " + tid + " sekunder i fritt fall er %.1f", distanse ); System.out.println("Angi distanse i meter:"); double distanse2 = tastatur.nextDouble(); double tid2 = System.out.println(Math.sqrt(2*distanse2/9,81)); System.out.println ("distanse i meter:" + distanse2 + " meter "); System.out.println ("tiden i fritt fall er:" + tid2 + " sekunder"); } } takker for all hjelp! Lenke til kommentar
jurg Skrevet 2. september 2010 Del Skrevet 2. september 2010 double tid2 = System.out.println(Math.sqrt(2*distanse2/9,81)); Komma brukes for å separere argumenter. Lenke til kommentar
Thorsen Skrevet 2. september 2010 Del Skrevet 2. september 2010 Så det du har skrevet blir tolket som at 81 er en integerverdi Du har 2*distanse2/9 som er en double KOMMA 81 som er en integer. Bruk heller 9.81 så skulle det gå. Lenke til kommentar
13375k1133z Skrevet 2. september 2010 Forfatter Del Skrevet 2. september 2010 TAkker for rettelse. Prøvde med .81, erroren som kom da er; incompatible types found : void required: double Lenke til kommentar
Thorsen Skrevet 2. september 2010 Del Skrevet 2. september 2010 Hva gjør System.out.println ? returnerer den en double? Les javadoc Lenke til kommentar
13375k1133z Skrevet 2. september 2010 Forfatter Del Skrevet 2. september 2010 Doh, det er klart printf jeg skal bruke. endret litt tåpelig kode og problemet ble fikset med at jeg endret. Tusen takk for hjelpen! double tid2 = System.out.println(Math.sqrt(2*distanse2/9,81)); System.out.println ("distanse i meter:" + distanse2 + " meter "); til double tid2 = Math.sqrt((2*distanse2)/g); System.out.printf("Tiden i fritt fall: %.1f sekunder", tid2);. Et siste spørsmål: HVa er det som skjer her: 4/7.0-4/7 = 0.571428571428571, hva skjer ? Lenke til kommentar
osmoen Skrevet 2. september 2010 Del Skrevet 2. september 2010 Dersom jeg skal gjette: 4/7.0 gir deg et resultat med desimaler. 4/7 er vel heltallsdivisjon, i dette tilfellet blir svaret mindre enn 1 og 0 blir derfor resultatet. Altså 4/7 - 0 = 0.571428571428571 Lenke til kommentar
xaco Skrevet 2. september 2010 Del Skrevet 2. september 2010 Hvorfor bruker du System.out.println? Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå