Gå til innhold

Mulig å gjøre koden bedre?


Anbefalte innlegg

Ble nettopp ferdig med en oppgave i java. Oppdaget at koden virket utrolig rotete og lang for en så enkel regneoperasjon

 

1. Er det mulig å optimalisere den på en måte/er det noe jeg har gjort tungvindt ?

(koden er under)

 

2. hva er årsaken til (java):

2+"9" blir skrevet "ut" som: 29?

5/7 blir skrevet "ut" som: 0?

7/0 blir skrevet "ut" som: java.lang.ArithmeticException: / by zero?

7.0/0 blir skrevet "ut" som: infinity?

5/3.0-5/3 blir skrevet "ut" som: 0.66666...7?

 

Takker på forhånd for hjelp!

 

Koden:

 

/* Regner celcius om til farenheit og kelvin.

* Regner farenheit om til celcius og kelvin.

* */

 

import java.text.DecimalFormat;

import java.util.Scanner;

class temperaturq {

public static void main (String[]args ) {

 

Scanner tastatur = new Scanner (System.in);

//dekalere variabler

double temperatur; //regner ut fra celcius

double kelvin;

double farenheit;

double celcius;

double kelvin2;

double temperatur2; //regner ut fra farenheit

 

System.out.print("Temperatur i celcius");

 

//leser tastatur og gjør regneoperasjon

temperatur = tastatur.nextDouble();

farenheit = (temperatur * 1.8) + 32;

kelvin = temperatur + 273.15 ;

 

//konventerer til ##.# desimal.

DecimalFormat df = new DecimalFormat ("###.#");

 

//Skriver ut resultat

System.out.println (df.format(temperatur) + " C");

System.out.println (df.format(farenheit) + " F");

System.out.println (df.format(kelvin) + " K");

 

System.out.print ("Temperatur i farenheit");

 

temperatur2 = tastatur.nextDouble();

celcius = (0.56 * (temperatur2 - 32)) ;

kelvin2 = celcius + 273.15;

 

System.out.println (df.format(temperatur2) + " F");

System.out.println (df.format(celcius) + " C");

System.out.println (df.format(kelvin2) + " K");

 

}

}

Endret av 13375k1133z
Lenke til kommentar
Videoannonse
Annonse

[...]

hva er årsaken til (java):

[...]

2+"9" blir skrevet "ut" som: 29?

Kort fortalt: Her gjør du det hele om til 'string', siden du bruker "-symbolet.

 

5/7 blir skrevet "ut" som: 0?

Ja, fordi tallene blir behandlet som heltall, og ikke desimaltall, og da blir resten "kastet". Prøv heller med følgende: 5.0/7.0

 

7/0 blir skrevet "ut" som: java.lang.ArithmeticException: / by zero?

Den skriver ikke, den gjør et unntak fordi du deler på tallet 0. Les mer her, om du lurer på hvorfor.

 

7.0/0 blir skrevet "ut" som: infinity?

Se lenke over.

 

5/3.0-5/3 blir skrevet "ut" som: 0.66666...7?

Ja, stemmer bra det. Hva hadde du forventet?

 

Operatøren '/' har høyere rang enn '-', og siden 3 går en gang i 5 (og resten blir kastet, se hvorfor lenger opp) får du følgende: 1.666...7 - 1 = .6667.

 

/*
*	Regner celcius om til farenheit og kelvin.
*	Regner farenheit om til celcius og kelvin.
*/

import java.text.DecimalFormat;
import java.util.Scanner;

class temperaturq
{
 public static void main (String[] args)
 {
Scanner tastatur = new Scanner (System.in);

// Deklarere variabler
double kelvin;
double farenheit;
double celcius;

System.out.print("Temperatur i celcius: ");

// Leser tastatur og gjør regneoperasjon
celcius = tastatur.nextDouble();
farenheit = (celcius * 1.8) + 32;
kelvin = celcius + 273.15 ;

// Konventerer til ##.# desimal.
DecimalFormat df = new DecimalFormat ("###.#");

// Skriver ut resultat
System.out.println (df.format(celcius) + " C");
System.out.println (df.format(farenheit) +  " F");
System.out.println (df.format(kelvin) + " K");

System.out.print ("Temperatur i farenheit: ");

farenheit = tastatur.nextDouble();
celcius = (0.56 * (farenheit - 32)) ;
kelvin = celcius + 273.15;

System.out.println (df.format(farenheit) + " F");
System.out.println (df.format(celcius) + " C");
System.out.println (df.format(kelvin) + " K");
 }
}

 

Stort sett grei kode. Jeg endret den såvidt, bare for å gjenbruke et par variabler.

 

(Det er riktignok noe unøyaktighet når man bruker vanlige flytvariabler, men det er vel noe du lærer mer om senere.)

Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...