Avatar billede mlunde Nybegynder
18. september 2008 - 08:04 Der er 3 kommentarer og
1 løsning

Hjælp til modulus og printf

Hej.

Jeg har flg. kode, hvorfra man skal kunne taste to tal, hvoraf det først bliver divideret med det andet. Derefter skal det vises resultatet, som heltal og derefter det sidste. Fx. 23/7, er 3 og resten er 2.
Den sætter røde streger under result1. Jeg har bare brug for at denne kode duer, for har siddet virkelig lang tid med det. Nogle der kan forklare mig hvad der er galt?

Håber I kan hjælpe. Hilsen Michael

import java.util.Scanner;

public class AS26 {
  public static void main (String[] args) {

      double value1;
      double value2;
      int result1;
      double result2;

      System.out.println("This program will divide two values. The first value will be divided by the second value.");
     
      Scanner sc = new Scanner (System.in);

      System.out.print ("Enter the first value: ");
      value1 = sc.nextDouble ();

      System.out.print ("Enter the second value: ");
      value2 = sc.nextDouble ();

      result1 = value1/value2;
      result2 = value1 % value2;

      System.out.printf ("The quotient is result1=%d", resu1t1);
     
      System.out.printf("The remainder is result2=%f", result2);
 
   
     
 
  }
 
 
}
Avatar billede schwarz84 Nybegynder
18. september 2008 - 08:47 #1
Resultatet af at dividere to flydende kommatal (double) er ikke et heltal(int), det er en double, så du skal ændre "int result1" til "double result1". Jeg er ikke helt sikker på at det opfører sig som du forventer hvis du ikke bruger ints til det hele.
Hvis du vil konvertere til en int, så skriver du:
result1 = (int)(value1/value2);
Avatar billede mlunde Nybegynder
18. september 2008 - 09:49 #2
Tak. Den ser nu sådan her ud. Men i næstsidste linie får jeg at vide at det er der fejlen er. Nærmere betegnet ved 'result1'. Hvad kan problemet være?

import java.util.Scanner;

public class AS26 {
  public static void main (String[] args) {

      double value1;
      double value2;
      double result1;
      double result2;

      System.out.println("This program will divide two values. The first value will be divided by the second value.");
     
      Scanner sc = new Scanner (System.in);

      System.out.print ("Enter the first value: ");
      value1 = sc.nextDouble ();

      System.out.print ("Enter the second value: ");
      value2 = sc.nextDouble ();

      result1 = (int)(value1/value2);
      result2 = value1 % value2;

      System.out.printf ("The quotient is result1=%d", resu1t1);
     
      System.out.printf("The remainder is result2=%f\n", result2);
   
  }
   
}
Avatar billede mlunde Nybegynder
18. september 2008 - 09:51 #3
Det var en stavebøf, da det result1 ikke staves med to 1-taller :D. Mange tak for hjælpen... jeg er ny herinde.. hvordan overfører jeg pointsene?
Avatar billede schwarz84 Nybegynder
18. september 2008 - 09:57 #4
Du skal ikke både ændre restult1 til en double og konvertere til en int. Én af delene er nok, det andet giver potentielt flere afrundingsfejl, i det hele taget bør du altid bruge int frem for double hvor det er muligt.
Du overfører point ved at acceptere dette svar.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester