Avatar billede mannik Nybegynder
15. oktober 2003 - 07:38 Der er 11 kommentarer og
1 løsning

tværsum af tal

Ja nu kan i godt grine men jeg er helt ny med java. Jeg har en opgave hvor der bliver indtastet et vilkårligt tal i en JOptionPane.inputDialog boks. Jeg skal så finde tværsummen af dette tal. Jeg kan ikke rigtigt finde ud af at dele cifrene op så de kan behandles f.eks. 1234 skal blive 1+2+3+4 = sum. Jeg formoder at jeg kan putte hvert enkelt ciffer ind i en array . Men hvordan?
Avatar billede arne_v Ekspert
15. oktober 2003 - 07:41 #1
int tmp = tal;
int crosssum = 0;
while(tmp > 0) {
  crosssum = crosssum + tmp % 10;
  tmp = tmp / 10;
}
Avatar billede arne_v Ekspert
15. oktober 2003 - 07:42 #2
(je det blver 4+3+2+1 men forskellen er ens som man siger)
Avatar billede mannik Nybegynder
15. oktober 2003 - 09:38 #3
hmmm... Jeg vil gerne kunne forstå hele teknikken, kunne jeg mon lokke dig til at skrive hele klassen og forklare hvad det er du gør? for at kooem videre er det jo meget vigtibgt at jeg er klar over hvad der foregår og det kniber det lidt med lige nu. Jeg tror dog at når bare jeg får hul på det så skal det nok komme. På forhånd tak
Avatar billede mannik Nybegynder
15. oktober 2003 - 09:39 #4
og så mangler jeg bare lige at kunne rette mine stavefejl 8>(
Avatar billede arne_v Ekspert
15. oktober 2003 - 09:51 #5
Du laver en metode:

public static calculateCrosssum(int tal) {
  int tmp = tal;
  int crosssum = 0;
  while(tmp > 0) {
      crosssum = crosssum + tmp % 10;
      tmp = tmp / 10;
  }
  return crosssum;
}

og den kalder du bar emed et tal (hvis du har en String kan Integer.parseInt
konvertere den) og får tværsum tilbage.

Algoritmen er ganske simpel - den henter bare alle cifrene bagfra.
Avatar billede magoo20000 Nybegynder
15. oktober 2003 - 11:53 #6
mannik >> % er modulus - rest ved heltalsdivision.
Avatar billede mannik Nybegynder
15. oktober 2003 - 14:40 #7
Tak - indtil videre ... som det vil fremgå er jeg helt på bar bund. det der burde forekomme logisk gør det ikke.

det jeg har ser ud som følger :
import javax.swing.* ;

public class Tvaersum
  {

  public static calculateCrosssum(int tal) {
  int tmp = tal;
  int crosssum = 0;
  while(tmp > 0) {
      crosssum = crosssum + tmp % 10;
      tmp = tmp / 10;
  }
  return crosssum;
}


  public static void main(String args[])

  {
int tal = Integer.parseInt(JOptionPane.showInputDialog(null, "Indtast tal"));
JOptionPane.showMessageDialog(null, "+ tal +");

System.exit(0);
  }

  }
Når jeg compiler så siger den: invalid method declaration; return type required. - public static calculateCrosssum (int tal){

ja grin nu bare - det er ikke så let når man ikke kan.
Avatar billede arne_v Ekspert
15. oktober 2003 - 14:46 #8
Det der er faktisk min fejl !

Der mangler en return type. brug:

public static int calculateCrosssum(int tal) {

Altså et "int" foran metode navnet.
Avatar billede arne_v Ekspert
15. oktober 2003 - 14:49 #9
import javax.swing.*;

public class Tvaersum {

    public static int calculateCrosssum(int tal) {
        int tmp = tal;
        int crosssum = 0;
        while (tmp > 0) {
            crosssum = crosssum + tmp % 10;
            tmp = tmp / 10;
        }
        return crosssum;
    }

    public static void main(String args[]) {
        int tal =
            Integer.parseInt(JOptionPane.showInputDialog(null, "Indtast tal"));
        JOptionPane.showMessageDialog(
            null,
            "tværsum af " + tal + " er " + calculateCrosssum(tal));

        System.exit(0);
    }

}
Avatar billede arne_v Ekspert
15. oktober 2003 - 14:50 #10
Eller:

import javax.swing.*;

public class Tvaersum {

    public static int calculateCrosssum(int tal) {
        int tmp = tal;
        int crosssum = 0;
        while (tmp > 0) {
            crosssum = crosssum + tmp % 10;
            tmp = tmp / 10;
        }
        if (crosssum < 10) {
            return crosssum;
        } else {
            return calculateCrosssum(crosssum);
        }
    }

    public static void main(String args[]) {
        int tal =
            Integer.parseInt(JOptionPane.showInputDialog(null, "Indtast tal"));
        JOptionPane.showMessageDialog(
            null,
            "tværsum af " + tal + " er " + calculateCrosssum(tal));

        System.exit(0);
    }

}
Avatar billede arne_v Ekspert
15. oktober 2003 - 14:51 #11
(sidstnævnte returnere altid et 1 cifret tal)
Avatar billede mannik Nybegynder
15. oktober 2003 - 15:08 #12
Tak for hjælpen, nu mangler jeg bare at regne helt ud hvad der foregår.

Endnu engang , tusind tak
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