Avatar billede backupmand Nybegynder
28. december 2000 - 18:18 Der er 7 kommentarer og
1 løsning

Vil ikke printe nuller og lige tal ud

Min rutine skal printe antallet af lige, ulige og nuller ud i et antal tal
som man taster ind. Jeg modtager tallene (i denne orden: 23230 (et par tal))
som en streng for at køre charAt metoden, men det eneste der virker er odd++;
Jeg kan ikke se hvorfor - er der nogle der kan hjælpe ? Tal på forhånd, nedenfor
er koden ...


class Three_three
{
     
      private int odd, even, zero, temp;   
      private BufferedReader stdin;
     
      public void calculator () throws IOException
      {
      stdin = new BufferedReader(new InputStreamReader(System.in));
      System.out.println (\"enter an integer value: \");
      String value = stdin.readLine();
     
     
      for (int i=0;i<value.length();i++)
            {
            if (value.charAt(i)!=0) // trods denne virker det ikke som forv.
                {
                if(value.charAt(i)%2==0)
                {
                even++; // denne virker ikke, den tealler zero\'s med som even
                }
                }
            if (value.charAt(i)==0)
                {zero++;} // virker ikke           
            if (value.charAt(i)%2!=0) // denne virker fint
                {odd++;}
            }
           
            System.out.println (\"Amount of even numbers in (\"+value+\") \"+even);
            System.out.println (\"amount of zero digits in (\"+value+\") \"+zero);
            System.out.println (\"amount of odd digits in (\"+value+\") \"+odd);
           
           
      }
     
}



Avatar billede nico26 Nybegynder
28. december 2000 - 18:58 #1
du skal bare ændre følgende:
if (value.charAt(i) != \'0\') og
if (value.charAt(i) == \'0\')
Avatar billede stigc Nybegynder
28. december 2000 - 20:01 #2
grimt struktureret!
prøv:


for (int i=0;i<value.length();i++)  {

  if(value.charAt(i)%2==0)
                  even++;

  if (value.charAt(i)==0)
                zero++;

  if (value.charAt(i)%2==1)
              odd++;
 
  }
           
Avatar billede nico26 Nybegynder
28. december 2000 - 20:23 #3
stigc>> hvis jeg har fostået spørgsmålet rigtigt skal nuller ikke tælles med som et lige tal.
dette burde virke:

for (int i=0;i<value.length();i++)  {

  switch (value.charAt(i)%2) {
    case 0: {
      if (value.charAt(i) == \'0\')
        zero++;
      else
        even++;
        break;
    }
    case 1: {
      odd++;
      break;
    }
  }
}
Avatar billede stigc Nybegynder
28. december 2000 - 20:25 #4
jo det har du nok ret i!
Avatar billede kama Nybegynder
29. december 2000 - 09:41 #5
jeg forstår ikke helt din måde at strukturere programmet! nedenfor ses et test-program til løsning af opgaven, hvorfra du kan tage det du skal bruge. læg også mærke til håndteringen af exceptions.
personligt ville jeg nok have valgt, at \'caste\' karakterene til heltal og lægge dem i et int[] først. Bemærk: du kan regne på \'chars\', men det er med værdien i unicode!!!

import java.io.*;

class ValueCheck
{
    public static void main(String[] øf)
    {
        int zero = 0;
        int even = 0;
        int odd  = 0;
        String value =\"\";
       
        BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
        System.out.println (\"enter an integer value: \");
       
        try
        {  value = stdin.readLine();
        }
        catch(IOException e)
        {    System.out.println(e);
            System.exit(1);
        }
       
        for (int i = 0; i < value.length(); i++)
        {    //tallene 0-9 som chars har værdien 48-57 i unicode!
            if(value.charAt(i)==\'0\') //kunne også være ==48
                zero++;
            else if(value.charAt(i)%2==0)
                even++;
            else if(value.charAt(i)%2!=0)
                odd++;           
        }
       
        System.out.println (\"amount of zero digits in  (\"+value+\") \"+zero);
        System.out.println (\"Amount of even numbers in (\"+value+\") \"+even);
        System.out.println (\"amount of odd digits in  (\"+value+\") \"+odd);
    }
}
Avatar billede backupmand Nybegynder
29. december 2000 - 14:39 #6
Hej Kama
Jeg forsøger lige det du har lagt ud...
Den skal separere lige tal, ulige tal og nuller.


Avatar billede backupmand Nybegynder
29. december 2000 - 14:55 #7
ok, stigC, dit virker ikke.
Nico22\'s virker.. du får accepteret svar...
men du behøver ikke tage dig af, at det er
\"grimt\" struktureret (jeg er ligeglad)..
Kama du går fuldstændigt amok og laver et kæmpe
program.. jeg accepterer bare Nico22\'s svar,
da det var det klareste i denne omgang....




Avatar billede backupmand Nybegynder
29. december 2000 - 14:56 #8
håber det er ok...
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