Avatar billede backupmand Nybegynder
02. januar 2001 - 14:22 Der er 7 kommentarer og
1 løsning

skal finde samme integers

Hvordan finder jeg ud af, om et tal går igen i samme inputværdi?
Eks. inputvaerdi=12343
(3 går igen)
Det ser ikke ud som om jeg kan modtage vaerdien som en integer,
da jeg ikke kender til nogen metode, der kan undersøge dette.
Så prøvede jeg at modtage vaerdien som en String, fordi jeg ville
bruge charAt således:
for (int i=0;i<value.length();i++)
    if (value.charAt(i)==i)
        same++;

men det virker bar\' ik\'
Nogen forslag?
Avatar billede pathetic Nybegynder
02. januar 2001 - 15:47 #1
Hej Backupmand

Jeg har lige klasket nedenstående kode sammen. Det er helt sikkert ikke den bedste løsning, men den var hurtig :) Check hellere, at det virker før du bruger det.
----------------------------
public checkCiphers(String number) {
    boolean ciphers[]=new boolean[]{true,true,true,true,true,true,true,true,true,true};
    int t=0;
    while (t<number.length() && ciphers[number.charAt(t)-48])
        ciphers[number.charAt(t++)-48]=false;
    if (t==number.length())
        System.out.println(\"Tallet havde ingen gentagende cifre\");
    else
        System.out.println(\"Tallet havde et ciffer, der gentog sig\");
}
----------------------------

Du kan godt gøre det uden at skulle bruge en streng som input, men det fik jeg ikke liiige gjort her...

Avatar billede codemon Nybegynder
02. januar 2001 - 15:47 #2
charAt giver ASCII - værdien af indholdet 1\'s ASCII værdi er fx 49 og ikke 1

Også skal du have 2 løkker. Med din løkke testet hvert tal kun for én værdi. (nr 0 testes med ==0, nr 1 med ==1 osv.)

Lav en indre løkke der tæller fra 0 til 9 og tester hvert ciffer med det.

hvis du modtager en String kan du konvertere det til en int med Integer.parseInt (value);

eller du kan gå den anden vej med Integer.toString (tal);

Hvis du bruger charAt kan du trække 48 fra ASCII værdien for at få tallet.
Avatar billede erikjacobsen Ekspert
02. januar 2001 - 15:47 #3
Mener du nu ikke JavaScript ??
Avatar billede pathetic Nybegynder
02. januar 2001 - 15:54 #4
Naah, jeg prøver lige igen...

Nedenstående metode returnerer true, hvis et ciffer gentager sig.
-----------------------------------------
public boolean checkCiphers(String number) {
    boolean ciphers[]=new boolean[]{true,true,true,true,true,true,true,true,true,true};
    int t=0;
    while (t<number.length() && ciphers[number.charAt(t)-48])
        ciphers[number.charAt(t++)-48]=false;
    return (t!=number.length());
}
Avatar billede codemon Nybegynder
02. januar 2001 - 16:09 #5
Som pathetic \"siger\" det er ikke nødvendigt med 2 løkker, det andet er jo lidt smartere. Jeg glemte lige at bemærke at Integer.parseInt kaster en NumberFormatException hvis det er bogstaver man prøver at konvertere.
Avatar billede pstric Nybegynder
02. januar 2001 - 18:55 #6
Du kan også bruge findDubletter fra dette lille program:

import java.io.*;

public class FindGentagneCifre {
    private final static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

    public static void main(final String[] args) {
        FindGentagneCifre find = new FindGentagneCifre();
        System.out.println(\"Indtast et tal: \");
        String s = \"\";
        try {
            s = in.readLine();
        }
        catch (IOException e) {}
        if (find.findDubletter(s)) {
            System.out.println(\"Der er dubletter\");
        } else {
            System.out.println(\"Der er ingen dubletter\");
        }
    }

    public boolean findDubletter(final String s) {
        for (int i=0; i<s.length(); i++) {
            if (s.indexOf(s.charAt(i), i+1)>0) {
                return true;
            }
        }
        return false;
    }
}
Avatar billede mercutio Nybegynder
09. januar 2001 - 00:01 #7
for (int i=0;i<value.length();i++)
    if (value.charAt(i)==i)
        same++;
Din kode er næsten rigtig se nedenfor du laver en lille fejl...
for (int i=0;i<value.length();i++)
    if (value.charAt(i)==\'i\') //HUSK GNYFFER OM I
        same++;
Avatar billede mercutio Nybegynder
09. januar 2001 - 00:04 #8
Hele koden så du bare kan cut paste for at se at det funger nu. Husk ikke \" men \'

public class test

{public static void main(String[] args)
{    int same =0;
    String value =\"ininn\";
    for (int i=0;i<value.length();i++)
        if (value.charAt(i)==\'i\')
        same++;
    System.out.println(same);   
}
}
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