Avatar billede tingholm Mester
02. oktober 2002 - 21:22 Der er 38 kommentarer og
1 løsning

boolean lovlig = lovlig(input);

hvad går der galt siden compileren brokker sig ??
Avatar billede tingholm Mester
02. oktober 2002 - 21:24 #1
input er en String !!
Avatar billede erikjacobsen Ekspert
02. oktober 2002 - 21:29 #2
er lovlig() en metode?
Avatar billede tingholm Mester
02. oktober 2002 - 21:30 #3
jeps
Avatar billede erikjacobsen Ekspert
02. oktober 2002 - 21:30 #4
Ellers skal du

  public boolean lovlig(String s) {
    if (s.equals("jajada"))
      return true;
    else
      return false;
  }

..sådan cirka. "jajada" kan eventuelt udskiftes med en
mere passende tekst.
Avatar billede erikjacobsen Ekspert
02. oktober 2002 - 21:31 #5
OK vi krydsede hinanden. Hvilken fejl - og må vi se hele koden?
Avatar billede tingholm Mester
02. oktober 2002 - 21:33 #6
vi skal validere et ISBN nummer Kb.java er en ekstern fil som bare klarer indtastningen !!

her er den:
public class afl4_2
{
    public static void main (String [] args)
    {
        // indtastning
        System.out.println("Indtast ISBN: ");
        String input = Kb.readString();

        // checker om lovlig
        boolean lovlig = lovlig(input);

        // udskriver om lovlig
        if (lovlig == true)
            System.out.println("ISBN nummeret er lovligt");
        if (lovlig == false)
            System.out.println("ISBN nummeret er IKKE lovligt");
    }

    public static String lovlig(String input)
    {
        boolean lovlig = false;
        // checker længde på input
        if (input.length() != 12)
        {
            lovlig = false;
        }
        else
        {
            //finder første klynge
            int str = input.indexOf("-");
            String klynge1 = input.substring(0, str);
            input = input.substring(str);

            //finder anden klynge
            str = input.indexOf("-");
            String klynge2 = input.substring(0, str);
            input = input.substring(str);
       
            //finder tredje klynge
            str = input.indexOf("-");
            String klynge3 = input.substring(0, str);
            input = input.substring(str);
           
            //finder kontrolciffer
            String ctrl = input.charAt(0);
            input = input.substring(str);
           
            //checker længde på klynger
            if (klynge1.length() > 5)
            {
                lovlig = false;
            }
            if (klynge2.length() > 7)
            {
                lovlig = false;
            }
            if ( ( (klynge1.length())+(klynge2.length())+(klynge3.length())) != 9)
            {
                lovlig = false;
            }
           
//            //omdanner klynger til int
//            int kly1 = Integer.parseInt(klynge1);
//            int kly2 = Integer.parseInt(klynge2);
//            int kly3 = Integer.parseInt(klynge3);
           
            //samler de første 3 klynger igen
            String udenstreg = klynge1 + klynge2 + klynge3;

            //finder enkelte cifre
            char cif1 = udenstreg.charAt(0);
            int ci1 = Integer.parseInt(cif1);

            char cif2 = udenstreg.charAt(1);
            int ci2 = Integer.parseInt(cif2);

            char cif3 = udenstreg.charAt(2);
            int ci3 = Integer.parseInt(cif3);

            char cif4 = udenstreg.charAt(3);
            int ci4 = Integer.parseInt(cif4);

            char cif5 = udenstreg.charAt(4);
            int ci5 = Integer.parseInt(cif5);

            char cif6 = udenstreg.charAt(5);
            int ci6 = Integer.parseInt(cif6);

            char cif7 = udenstreg.charAt(6);
            int ci7 = Integer.parseInt(cif7);

            char cif8 = udenstreg.charAt(7);
            int ci8 = Integer.parseInt(cif8);

            char cif9 = udenstreg.charAt(8);
            int ci9 = Integer.parseInt(cif9);

            char cif0 = udenstreg.charAt(9);
           
            //checker kontrolværdi
            int sum = (ci1*10)+(ci2*9)+(ci3*8)+(ci4*7)+(ci5*6)+(ci6*5)+(ci7*4)+(ci8*3)+(ci9*2);
            sum = 11 - (sum/11);
           
            if (sum == 10 && cif0 == "X")
            {
                lovlig = true;
            }
            else if (sum == cif0)
            {
                lovlig = true;
            }
        }
    }
}
Avatar billede tingholm Mester
02. oktober 2002 - 21:33 #7
og der er flere fejl en den !!
Avatar billede erikjacobsen Ekspert
02. oktober 2002 - 21:38 #8
public static String lovlig(String input) afleverer en String
som du forsøger at putte over i en boolean. Det er som at krydse
en hamster med en papegøje.
Avatar billede erikjacobsen Ekspert
02. oktober 2002 - 21:39 #9
Siger du overhovedet return i din lovlig() metode? Det
skal man. Hvor har du lært Java henne??
Avatar billede tingholm Mester
02. oktober 2002 - 21:42 #10
dobbelt DOH
Avatar billede tingholm Mester
02. oktober 2002 - 21:42 #11
(it-akademiet)
Avatar billede erikjacobsen Ekspert
02. oktober 2002 - 21:47 #12
Jeg tolker det som at du er ved at lære - fint nok :)
Man lærer *kun* ved at lave fejl - så bliv ved me det 1
Avatar billede tingholm Mester
02. oktober 2002 - 21:48 #13
//finder enkelte cifre
String cif1 = udenstreg.charAt(0);
int ci1 = Integer.parseInt(cif1);

char cif2 = udenstreg.charAt(1);
int ci2 = Integer.parseInt(cif2);

compiler:

afl4_2.java:70: incompatible types
found  : char
required: java.lang.String
            String cif1 = udenstreg.charAt(0);
                                                      ^
afl4_2.java:74: cannot resolve symbol
symbol  : method parseInt  (char)
location: class java.lang.Integer
            int ci2 = Integer.parseInt(cif2);
                                              ^

Jeg har prøvet at løse problemet i fejl 2, men det giver fejl 1 i stedet !!
Avatar billede disky Nybegynder
02. oktober 2002 - 21:48 #14
ret:
public static String lovlig(String input)

til
public static boolean lovlig(String input)

og smid en
return lovlig;
ind som det sidste i din verificeringsmetode.

Så skulle det spille.
Avatar billede disky Nybegynder
02. oktober 2002 - 21:50 #15
ret:
String cif1 = udenstreg.charAt(0);
int ci1 = Integer.parseInt(cif1);
char cif2 = udenstreg.charAt(1);
int ci2 = Integer.parseInt(cif2);

til
String cif1 = udenstreg.subString(0,1);
int ci1 = Integer.parseInt(cif1);
String cif2 = udenstreg.subString(1,2);
int ci2 = Integer.parseInt(cif2);
Avatar billede tingholm Mester
02. oktober 2002 - 21:52 #16
disky>>

afl4_2.java:70: cannot resolve symbol
symbol  : method subString  (int,int)
location: class java.lang.String
            String cif1 = udenstreg.subString(0,1);
                                                    ^
Avatar billede disky Nybegynder
02. oktober 2002 - 21:54 #17
Nu kan det compiles, men den siger en bog jeg har, ikke har et gyldigt ISBN

public class afl4_2
{
    public static void main (String [] args)
    {
        // indtastning
        System.out.println("Indtast ISBN: ");
        String input = "0201310058";//Kb.readString();

        // checker om lovlig
        boolean lovlig = lovlig(input);

        // udskriver om lovlig
        if (lovlig == true)
            System.out.println("ISBN nummeret er lovligt");
        if (lovlig == false)
            System.out.println("ISBN nummeret er IKKE lovligt");
    }

    public static boolean lovlig(String input)
    {
        boolean lovlig = false;
        // checker længde på input
        if (input.length() != 12)
        {
            lovlig = false;
        }
        else
        {
            //finder første klynge
            int str = input.indexOf("-");
            String klynge1 = input.substring(0, str);
            input = input.substring(str);

            //finder anden klynge
            str = input.indexOf("-");
            String klynge2 = input.substring(0, str);
            input = input.substring(str);
       
            //finder tredje klynge
            str = input.indexOf("-");
            String klynge3 = input.substring(0, str);
            input = input.substring(str);
           
            //finder kontrolciffer
            String ctrl = input.substring(0,1);
            input = input.substring(str);
           
            //checker længde på klynger
            if (klynge1.length() > 5)
            {
                lovlig = false;
            }
            if (klynge2.length() > 7)
            {
                lovlig = false;
            }
            if ( ( (klynge1.length())+(klynge2.length())+(klynge3.length())) != 9)
            {
                lovlig = false;
            }
           
//            //omdanner klynger til int
//            int kly1 = Integer.parseInt(klynge1);
//            int kly2 = Integer.parseInt(klynge2);
//            int kly3 = Integer.parseInt(klynge3);
           
            //samler de første 3 klynger igen
            String udenstreg = klynge1 + klynge2 + klynge3;

            //finder enkelte cifre
            char cif1 = udenstreg.charAt(0);
            int ci1 = Integer.parseInt(""+cif1);

            char cif2 = udenstreg.charAt(1);
            int ci2 = Integer.parseInt(""+cif2);

            char cif3 = udenstreg.charAt(2);
            int ci3 = Integer.parseInt(""+cif3);

            char cif4 = udenstreg.charAt(3);
            int ci4 = Integer.parseInt(""+cif4);

            char cif5 = udenstreg.charAt(4);
            int ci5 = Integer.parseInt(""+cif5);

            char cif6 = udenstreg.charAt(5);
            int ci6 = Integer.parseInt(""+cif6);

            char cif7 = udenstreg.charAt(6);
            int ci7 = Integer.parseInt(""+cif7);

            char cif8 = udenstreg.charAt(7);
            int ci8 = Integer.parseInt(""+cif8);

            char cif9 = udenstreg.charAt(8);
            int ci9 = Integer.parseInt(""+cif9);

            char cif0 = udenstreg.charAt(9);
           
            //checker kontrolværdi
            int sum = (ci1*10)+(ci2*9)+(ci3*8)+(ci4*7)+(ci5*6)+(ci6*5)+(ci7*4)+(ci8*3)+(ci9*2);
            sum = 11 - (sum/11);
           
            if (sum == 10 && cif0 == 'X')
            {
                lovlig = true;
            }
            else if (sum == cif0)
            {
                lovlig = true;
            }
        }
        return lovlig;
    }
}
Avatar billede tingholm Mester
02. oktober 2002 - 21:59 #18
Nu compiler den i hvert fald.... så kan jeg lige kigge funktionaliteten igennem !!

Erik kan du ikke lige svare så jeg kan gi dig lidt points også ?!?!?
Avatar billede erikjacobsen Ekspert
02. oktober 2002 - 22:11 #19
Points? Send dem til de fattige.
Avatar billede disky Nybegynder
02. oktober 2002 - 22:11 #20
Sådanne nu virker den også :-)

Der var en fejl i din sum udregning.

p.s. det er ikke den pæneste måde at lave det på, men det virker :)


public class afl4_2
{
    public static void main (String [] args)
    {
        // indtastning
        System.out.println("Indtast ISBN: ");
        String input = Kb.readString();

        // checker om lovlig
        boolean lovlig = lovlig(input);

        // udskriver om lovlig
        if (lovlig == true)
        {
            System.out.println("ISBN nummeret er lovligt");
        }
        else
        {
            System.out.println("ISBN nummeret er IKKE lovligt");
        }
    }

    public static boolean lovlig(String input)
    {
        boolean lovlig = false;
        // checker længde på input
//        if (input.length() != 12)
        {
//            lovlig = false;
        }
//        else
        {
            //finder første klynge
            int str = input.indexOf("-");
            String klynge1 = input.substring(0, str);
            input = input.substring(str+1);

            //finder anden klynge
            str = input.indexOf("-");
            String klynge2 = input.substring(0, str);
            input = input.substring(str+1);
       
            //finder tredje klynge
            str = input.indexOf("-");
            String klynge3 = input.substring(0, str);
            input = input.substring(str+1);
           
            //finder kontrolciffer
            String ctrl = input.substring(0,1);
//            input = input.substring(str+1);
           
            //checker længde på klynger
            if (klynge1.length() > 5)
            {
                lovlig = false;
            }
            if (klynge2.length() > 7)
            {
                lovlig = false;
            }
            if ( ( (klynge1.length())+(klynge2.length())+(klynge3.length())) != 9)
            {
                lovlig = false;
            }
           
//            //omdanner klynger til int
//            int kly1 = Integer.parseInt(klynge1);
//            int kly2 = Integer.parseInt(klynge2);
//            int kly3 = Integer.parseInt(klynge3);
           
            //samler de første 3 klynger igen
            String udenstreg = klynge1 + klynge2 + klynge3+ctrl;

            //finder enkelte cifre
            char cif1 = udenstreg.charAt(0);
            int ci1 = Integer.parseInt(""+cif1);

            char cif2 = udenstreg.charAt(1);
            int ci2 = Integer.parseInt(""+cif2);

            char cif3 = udenstreg.charAt(2);
            int ci3 = Integer.parseInt(""+cif3);

            char cif4 = udenstreg.charAt(3);
            int ci4 = Integer.parseInt(""+cif4);

            char cif5 = udenstreg.charAt(4);
            int ci5 = Integer.parseInt(""+cif5);

            char cif6 = udenstreg.charAt(5);
            int ci6 = Integer.parseInt(""+cif6);

            char cif7 = udenstreg.charAt(6);
            int ci7 = Integer.parseInt(""+cif7);

            char cif8 = udenstreg.charAt(7);
            int ci8 = Integer.parseInt(""+cif8);

            char cif9 = udenstreg.charAt(8);
            int ci9 = Integer.parseInt(""+cif9);

            char cif0 = udenstreg.charAt(9);
            int ci10=Integer.parseInt(""+cif0);
           
            //checker kontrolværdi
            int sum = (ci1*1)+(ci2*2)+(ci3*3)+(ci4*4)+(ci5*5)+(ci6*6)+(ci7*7)+(ci8*8)+(ci9*9);
//            sum = 11 - (sum/11);
            sum=sum%11;
           
            if (sum == 10 && cif0 == 'X')
            {
                lovlig = true;
            }
            else if (sum == ci10)
            {
                lovlig = true;
            }
        }
        return lovlig;
    }
}
Avatar billede tingholm Mester
02. oktober 2002 - 22:19 #21
prøv lige at køre det her:

public class afl4_2
{
    public static void main (String [] args)
    {
        // indtastning
        System.out.println("Indtast ISBN: ");
        String input = Kb.readString();

        // checker om lovlig
        boolean lovlig = lovlig(input);

        // udskriver om lovlig
        if (lovlig == true)
            System.out.println("ISBN nummeret er lovligt");
        if (lovlig == false)
            System.out.println("ISBN nummeret er IKKE lovligt");
    }

    public static boolean lovlig(String input)
    {
        boolean lovlig = false;
//        // checker længde på input
//        if (input.length() != 13)
//        {
//            lovlig = false;
//            System.out.println("Totallængde for lang eller kort");
//            System.out.println(input.length());
//        }
//        else
//        {
            //finder første klynge
            int str = input.indexOf("-");
            String klynge1 = input.substring(0, str);
            input = input.substring(str);

            //finder anden klynge
            str = input.indexOf("-");
            String klynge2 = input.substring(0, str);
            input = input.substring(str);
       
            //finder tredje klynge
            str = input.indexOf("-");
            String klynge3 = input.substring(0, str);
            input = input.substring(str);
           
            //finder kontrolciffer
            char ctrl = input.charAt(0);
           
            //checker længde på klynger
            if (klynge1.length() > 5)
            {
                lovlig = false;
                System.out.println("Klynge 1 for lang");
            }
            if (klynge2.length() > 7)
            {
                lovlig = false;
                System.out.println("Klynge 2 for lang");
            }
            if ( ( (klynge1.length())+(klynge2.length())+(klynge3.length())) != 9)
            {
                lovlig = false;
                System.out.println("Klynge 1+2+3 længde er ikke 9");
                System.out.println(( (klynge1.length())+(klynge2.length())+(klynge3.length())));
            }
           
//            //omdanner klynger til int
//            int kly1 = Integer.parseInt(klynge1);
//            int kly2 = Integer.parseInt(klynge2);
//            int kly3 = Integer.parseInt(klynge3);
           
            //samler de første 3 klynger igen
            String udenstreg = klynge1 + klynge2 + klynge3 + ctrl;

            //finder enkelte cifre
            char cif1 = udenstreg.charAt(0);
            int ci1 = Integer.parseInt("" + cif1);

            char cif2 = udenstreg.charAt(1);
            int ci2 = Integer.parseInt("" + cif2);

            char cif3 = udenstreg.charAt(2);
            int ci3 = Integer.parseInt("" + cif3);

            char cif4 = udenstreg.charAt(3);
            int ci4 = Integer.parseInt("" + cif4);

            char cif5 = udenstreg.charAt(4);
            int ci5 = Integer.parseInt("" + cif5);

            char cif6 = udenstreg.charAt(5);
            int ci6 = Integer.parseInt("" + cif6);

            char cif7 = udenstreg.charAt(6);
            int ci7 = Integer.parseInt("" + cif7);

            char cif8 = udenstreg.charAt(7);
            int ci8 = Integer.parseInt("" + cif8);

            char cif9 = udenstreg.charAt(8);
            int ci9 = Integer.parseInt("" + cif9);

            char cif0 = udenstreg.charAt(9);
           
            //checker kontrolværdi
            int sum = (ci1*10)+(ci2*9)+(ci3*8)+(ci4*7)+(ci5*6)+(ci6*5)+(ci7*4)+(ci8*3)+(ci9*2);
            sum = 11 - (sum/11);
           
            if (sum == 10 && cif0 == 'X')
            {
                lovlig = true;
                System.out.println("Kontrolciffer X passer");
            }
            else if (sum == cif0)
            {
                lovlig = true;
            }
//        }
        return lovlig;
    }
}
Avatar billede disky Nybegynder
02. oktober 2002 - 22:23 #22
ikke lige nu er ved at gøre koden pæn :)
Avatar billede tingholm Mester
02. oktober 2002 - 22:26 #23
jamen den virker ikke endnu !!!
Avatar billede disky Nybegynder
02. oktober 2002 - 22:26 #24
Så er den blevet finpudset lidt:

import java.util.*;

public class afl4_2
{
    public static void main(String [] args)
    {
        // indtastning
        System.out.println("Indtast ISBN: ");
        String input = "0-201-31005-8";//Kb.readString();
       
        // checker om lovlig
        boolean lovlig = lovlig(input);
       
        // udskriver om lovlig
        if (lovlig == true)
        {
            System.out.println("ISBN nummeret er lovligt");
        }
        else
        {
            System.out.println("ISBN nummeret er IKKE lovligt");
        }
    }
   
    public static boolean lovlig(String input)
    {
        boolean lovlig = false;
        String udenstreg=removeLine(input); //fjern -
       
        int sum=0;

        for(int x=0;x<9;x++)
        {
            sum+=Integer.parseInt(udenstreg.substring(x,x+1))*(x+1);
        }
        sum=sum%11;
       
        if (sum == 10 && cif0 == 'X')
        {
            lovlig = true;
        }
        else if (sum == ci10)
        {
            lovlig = true;
        }
        return lovlig;
    }
   
    private static String removeLine(String input)
    {
        StringBuffer output=new StringBuffer();
        for(int x=0;x<input.length();x++)
        {
            char temp=input.charAt(x);
            if(temp>='0' && temp<='9')
            {
                output.append(temp);
            }
        }
        return output.toString();
    }
}
Avatar billede tingholm Mester
02. oktober 2002 - 22:30 #25
fedt at aflevere noget jeg ikke fatter en pløk af !!
Avatar billede disky Nybegynder
02. oktober 2002 - 22:32 #26
mit sidste eksempel, fjerner hårdt og brutalt alle '-' med det samme, og udregner derefter, dette sikre at et ISBN også verificeres hvis folk f.eks. har glemt '-'.

ups, et par små fejl:

import java.util.*;

public class afl4_2
{
    public static void main(String [] args)
    {
        // indtastning
        System.out.println("Indtast ISBN: ");
        String input = "0201310058";//Kb.readString();
       
        // checker om lovlig
        boolean lovlig = lovlig(input);
       
        // udskriver om lovlig
        if (lovlig == true)
        {
            System.out.println("ISBN nummeret er lovligt");
        }
        else
        {
            System.out.println("ISBN nummeret er IKKE lovligt");
        }
    }
   
    public static boolean lovlig(String input)
    {
        boolean lovlig = false;
        String udenstreg=removeLine(input); //fjern -
       
        int sum=0;

        for(int x=0;x<9;x++)
        {
            sum+=Integer.parseInt(udenstreg.substring(x,x+1))*(x+1);
        }
        sum=sum%11;
       
        char ctrl=udenstreg.charAt(9);
        int ctrlNum=Integer.parseInt(udenstreg.substring(9));
       
        if (sum == 10 && udenstreg.charAt(9) == 'X')
        {
            lovlig = true;
        }
        else if (sum == ctrlNum)
        {
            lovlig = true;
        }
        return lovlig;
    }
   
    private static String removeLine(String input)
    {
        StringBuffer output=new StringBuffer();
        for(int x=0;x<input.length();x++)
        {
            char temp=input.charAt(x);
            if(temp>='0' && temp<='9')
            {
                output.append(temp);
            }
        }
        return output.toString();
    }
}
Avatar billede disky Nybegynder
02. oktober 2002 - 22:34 #27
hov, du afviser mit sva fra : 02/10-2002 22:11:50

Som virker helt korrekt, derefter har jeg bare for fornøjelsen skyld brugt løkker osv, men svaret er din egen løsning med fejl fjernet.

Så kan du evt. bruge den finpudsede udgave til at lære lidt extra, hvis du ønsker det.
Avatar billede tingholm Mester
02. oktober 2002 - 22:34 #28
ja og i en aflevering som jeg får 4-5 uger efter jeg er startet på skolen afleverer jeg noget vi ikke har lært endnu !! og hvad er det med løkkerne ???
Avatar billede disky Nybegynder
02. oktober 2002 - 22:36 #29
som sagt svaret fra : 02/10-2002 22:11:50 er din løsning uden fejl.

Det med løkkerne er at jeg har brugt, for løkker ikke andet.

Da jeg læste til ingeniør afleverede jeg tit ting som vi ikke havde lært endnu, der var intet der forbød mig at læse foran i bogen, hvilket jeg gjorde.

Men som sagt brug løsningen fra 02/10-2002 22:11:50
Avatar billede tingholm Mester
02. oktober 2002 - 22:40 #30
den første du lavede virker ikke !!
prøv at køre igennem med ISBN 0-13-031997-X (det er java lærebogen på akademiet !!) det virker ikke !!
Avatar billede disky Nybegynder
02. oktober 2002 - 22:43 #31
Sorry

Kunne ikke teste med et ISBN uden checksum da jeg ikke havde en bog ved hånden, men fejl rettet nu:
public class afl4_2
{
    public static void main (String [] args)
    {
        // indtastning
        System.out.println("Indtast ISBN: ");
        String input = Kb.readString();

        // checker om lovlig
        boolean lovlig = lovlig(input);

        // udskriver om lovlig
        if (lovlig == true)
        {
            System.out.println("ISBN nummeret er lovligt");
        }
        else
        {
            System.out.println("ISBN nummeret er IKKE lovligt");
        }
    }

    public static boolean lovlig(String input)
    {
        boolean lovlig = false;
        // checker længde på input
//        if (input.length() != 12)
        {
//            lovlig = false;
        }
//        else
        {
            //finder første klynge
            int str = input.indexOf("-");
            String klynge1 = input.substring(0, str);
            input = input.substring(str+1);

            //finder anden klynge
            str = input.indexOf("-");
            String klynge2 = input.substring(0, str);
            input = input.substring(str+1);
       
            //finder tredje klynge
            str = input.indexOf("-");
            String klynge3 = input.substring(0, str);
            input = input.substring(str+1);
           
            //finder kontrolciffer
            String ctrl = input.substring(0,1);
//            input = input.substring(str+1);
           
            //checker længde på klynger
            if (klynge1.length() > 5)
            {
                lovlig = false;
            }
            if (klynge2.length() > 7)
            {
                lovlig = false;
            }
            if ( ( (klynge1.length())+(klynge2.length())+(klynge3.length())) != 9)
            {
                lovlig = false;
            }
           
//            //omdanner klynger til int
//            int kly1 = Integer.parseInt(klynge1);
//            int kly2 = Integer.parseInt(klynge2);
//            int kly3 = Integer.parseInt(klynge3);
           
            //samler de første 3 klynger igen
            String udenstreg = klynge1 + klynge2 + klynge3+ctrl;

            //finder enkelte cifre
            char cif1 = udenstreg.charAt(0);
            int ci1 = Integer.parseInt(""+cif1);

            char cif2 = udenstreg.charAt(1);
            int ci2 = Integer.parseInt(""+cif2);

            char cif3 = udenstreg.charAt(2);
            int ci3 = Integer.parseInt(""+cif3);

            char cif4 = udenstreg.charAt(3);
            int ci4 = Integer.parseInt(""+cif4);

            char cif5 = udenstreg.charAt(4);
            int ci5 = Integer.parseInt(""+cif5);

            char cif6 = udenstreg.charAt(5);
            int ci6 = Integer.parseInt(""+cif6);

            char cif7 = udenstreg.charAt(6);
            int ci7 = Integer.parseInt(""+cif7);

            char cif8 = udenstreg.charAt(7);
            int ci8 = Integer.parseInt(""+cif8);

            char cif9 = udenstreg.charAt(8);
            int ci9 = Integer.parseInt(""+cif9);

            char cif0 = udenstreg.charAt(9);
           
         
            //checker kontrolværdi
            int sum = (ci1*1)+(ci2*2)+(ci3*3)+(ci4*4)+(ci5*5)+(ci6*6)+(ci7*7)+(ci8*8)+(ci9*9);
//            sum = 11 - (sum/11);
            sum=sum%11;
           
            if (sum == 10 && cif0 == 'X')
            {
                lovlig = true;
            }
            else if (sum == Integer.parseInt(udenstreg.substring(9)));
            {
                lovlig = true;
            }
        }
        return lovlig;
    }
}


Din løsning der funker :)
Avatar billede disky Nybegynder
02. oktober 2002 - 22:46 #32
Sådanne nu virker den finpudsede også med 'x'
import java.util.*;

public class afl4_2
{
    public static void main(String [] args)
    {
        // indtastning
        System.out.println("Indtast ISBN: ");
        String input = Kb.readString();
       
        // checker om lovlig
        boolean lovlig = lovlig(input);
       
        // udskriver om lovlig
        if (lovlig == true)
        {
            System.out.println("ISBN nummeret er lovligt");
        }
        else
        {
            System.out.println("ISBN nummeret er IKKE lovligt");
        }
    }
   
    public static boolean lovlig(String input)
    {
        boolean lovlig = false;
        String udenstreg=removeLine(input); //fjern -
       
        int sum=0;

        for(int x=0;x<9;x++)
        {
            sum+=Integer.parseInt(udenstreg.substring(x,x+1))*(x+1);
        }
        sum=sum%11;
       
        if (sum == 10 && udenstreg.charAt(9) == 'X')
        {
            lovlig = true;
        }
        else if (sum == Integer.parseInt(udenstreg.substring(9)))
        {
            lovlig = true;
        }
        return lovlig;
    }
   
    private static String removeLine(String input)
    {
        StringBuffer output=new StringBuffer();
        for(int x=0;x<input.length();x++)
        {
            char temp=input.charAt(x);
            if(temp!='-')
            {
                output.append(temp);
            }
        }
        return output.toString();
    }
}
Avatar billede tingholm Mester
02. oktober 2002 - 22:57 #33
ja ud over at det STADIG ikke virker så er det fint !! tester du ikke noget inden du sender det afsted ?
Avatar billede disky Nybegynder
02. oktober 2002 - 23:03 #34
Helt ærligt med den attitude skal du ikke regne med hjælp i fremtiden, selvfølgelig checker jeg min kode inden jeg poster den, og den VIRKER !!!

Nu har jeg tager din ISBN og hardcodet den ind i min løsning, og gæt selv hvad resultatet er:
  Indtast ISBN:
  ISBN nummeret er lovligt

Her er koden hvis du betvivler mit svar:

public class afl4_2
{
    public static void main (String [] args)
    {
        // indtastning
        System.out.println("Indtast ISBN: ");
        String input = "0-13-031997-X";//Kb.readString();

        // checker om lovlig
        boolean lovlig = lovlig(input);

        // udskriver om lovlig
        if (lovlig == true)
        {
            System.out.println("ISBN nummeret er lovligt");
        }
        else
        {
            System.out.println("ISBN nummeret er IKKE lovligt");
        }
    }

    public static boolean lovlig(String input)
    {
        boolean lovlig = false;
        // checker længde på input
//        if (input.length() != 12)
        {
//            lovlig = false;
        }
//        else
        {
            //finder første klynge
            int str = input.indexOf("-");
            String klynge1 = input.substring(0, str);
            input = input.substring(str+1);

            //finder anden klynge
            str = input.indexOf("-");
            String klynge2 = input.substring(0, str);
            input = input.substring(str+1);
       
            //finder tredje klynge
            str = input.indexOf("-");
            String klynge3 = input.substring(0, str);
            input = input.substring(str+1);
           
            //finder kontrolciffer
            String ctrl = input.substring(0,1);
//            input = input.substring(str+1);
           
            //checker længde på klynger
            if (klynge1.length() > 5)
            {
                lovlig = false;
            }
            if (klynge2.length() > 7)
            {
                lovlig = false;
            }
            if ( ( (klynge1.length())+(klynge2.length())+(klynge3.length())) != 9)
            {
                lovlig = false;
            }
           
//            //omdanner klynger til int
//            int kly1 = Integer.parseInt(klynge1);
//            int kly2 = Integer.parseInt(klynge2);
//            int kly3 = Integer.parseInt(klynge3);
           
            //samler de første 3 klynger igen
            String udenstreg = klynge1 + klynge2 + klynge3+ctrl;

            //finder enkelte cifre
            char cif1 = udenstreg.charAt(0);
            int ci1 = Integer.parseInt(""+cif1);

            char cif2 = udenstreg.charAt(1);
            int ci2 = Integer.parseInt(""+cif2);

            char cif3 = udenstreg.charAt(2);
            int ci3 = Integer.parseInt(""+cif3);

            char cif4 = udenstreg.charAt(3);
            int ci4 = Integer.parseInt(""+cif4);

            char cif5 = udenstreg.charAt(4);
            int ci5 = Integer.parseInt(""+cif5);

            char cif6 = udenstreg.charAt(5);
            int ci6 = Integer.parseInt(""+cif6);

            char cif7 = udenstreg.charAt(6);
            int ci7 = Integer.parseInt(""+cif7);

            char cif8 = udenstreg.charAt(7);
            int ci8 = Integer.parseInt(""+cif8);

            char cif9 = udenstreg.charAt(8);
            int ci9 = Integer.parseInt(""+cif9);

            char cif0 = udenstreg.charAt(9);
           
         
            //checker kontrolværdi
            int sum = (ci1*1)+(ci2*2)+(ci3*3)+(ci4*4)+(ci5*5)+(ci6*6)+(ci7*7)+(ci8*8)+(ci9*9);
//            sum = 11 - (sum/11);
            sum=sum%11;
           
            if (sum == 10 && cif0 == 'X')
            {
                lovlig = true;
            }
            else if (sum == Integer.parseInt(udenstreg.substring(9)));
            {
                lovlig = true;
            }
        }
        return lovlig;
    }
}



p.s. Kig lige på hvem der har flest point i denne gruppe og spørg så dig selv igen, 'mon han aldrig tester sine ting', hvis jeg ikke gør er det godt nok utroligt jeg har fået så mange point. !
Avatar billede tingholm Mester
02. oktober 2002 - 23:16 #35
ok "ham der har mange ponts" prøv at skrive et ygyldigt isbn:

Indtast ISBN:
12345-67-89-4
ISBN nummeret er lovligt

Indtast ISBN:
12345-678-9-X
ISBN nummeret er lovligt

Indtast ISBN:
1234-567-89-2
ISBN nummeret er lovligt

jeg vil da ikke udelukke at det teoretisk set godt kan ske at jeg tilfældigvis rammer 3 gyldige, men når man tæller de 10 gæt med som jeg ikke har vist dig lydder det lidt usandsynligt !!

ps. det er den attitude skyldes at min tolmodighed er ved at være brugt !!

ps. kig på hvem der er ligeglad med dine points...se på erikjacobsen, de betyder ikke noget bare lir' !!!
Avatar billede tingholm Mester
02. oktober 2002 - 23:19 #36
ugyldigt even
Avatar billede disky Nybegynder
03. oktober 2002 - 07:17 #37
tingholm:
prøv igen:
public class afl4_2
{
    public static void main (String [] args)
    {
        // indtastning
        System.out.println("Indtast ISBN: ");
        String input = "12345-678-9-4";//Kb.readString();

        // checker om lovlig
        boolean lovlig = lovlig(input);

        // udskriver om lovlig
        if (lovlig == true)
        {
            System.out.println("ISBN nummeret er lovligt");
        }
        else
        {
            System.out.println("ISBN nummeret er IKKE lovligt");
        }
    }

    public static boolean lovlig(String input)
    {
        boolean lovlig = false;
        // checker længde på input
//        if (input.length() != 12)
        {
//            lovlig = false;
        }
//        else
        {
            //finder første klynge
            int str = input.indexOf("-");
            String klynge1 = input.substring(0, str);
            input = input.substring(str+1);

            //finder anden klynge
            str = input.indexOf("-");
            String klynge2 = input.substring(0, str);
            input = input.substring(str+1);
       
            //finder tredje klynge
            str = input.indexOf("-");
            String klynge3 = input.substring(0, str);
            input = input.substring(str+1);
           
            //finder kontrolciffer
            String ctrl = input.substring(0,1);
//            input = input.substring(str+1);
           
            //checker længde på klynger
            if (klynge1.length() > 5)
            {
                lovlig = false;
            }
            if (klynge2.length() > 7)
            {
                lovlig = false;
            }
            if ( ( (klynge1.length())+(klynge2.length())+(klynge3.length())) != 9)
            {
                lovlig = false;
            }
           
//            //omdanner klynger til int
//            int kly1 = Integer.parseInt(klynge1);
//            int kly2 = Integer.parseInt(klynge2);
//            int kly3 = Integer.parseInt(klynge3);
           
            //samler de første 3 klynger igen
            String udenstreg = klynge1 + klynge2 + klynge3+ctrl;

            //finder enkelte cifre
            char cif1 = udenstreg.charAt(0);
            int ci1 = Integer.parseInt(""+cif1);

            char cif2 = udenstreg.charAt(1);
            int ci2 = Integer.parseInt(""+cif2);

            char cif3 = udenstreg.charAt(2);
            int ci3 = Integer.parseInt(""+cif3);

            char cif4 = udenstreg.charAt(3);
            int ci4 = Integer.parseInt(""+cif4);

            char cif5 = udenstreg.charAt(4);
            int ci5 = Integer.parseInt(""+cif5);

            char cif6 = udenstreg.charAt(5);
            int ci6 = Integer.parseInt(""+cif6);

            char cif7 = udenstreg.charAt(6);
            int ci7 = Integer.parseInt(""+cif7);

            char cif8 = udenstreg.charAt(7);
            int ci8 = Integer.parseInt(""+cif8);

            char cif9 = udenstreg.charAt(8);
            int ci9 = Integer.parseInt(""+cif9);

            char cif0 = udenstreg.charAt(9);
           
         
            //checker kontrolværdi
            int sum = (ci1*1)+(ci2*2)+(ci3*3)+(ci4*4)+(ci5*5)+(ci6*6)+(ci7*7)+(ci8*8)+(ci9*9);
//            sum = 11 - (sum/11);
            sum=sum%11;
           
            if (sum == 10 && cif0 == 'X')
            {
                lovlig = true;
            }
            else if (sum == Integer.parseInt(udenstreg.substring(9)))
            {
                lovlig = true;
            }
        }
        return lovlig;
    }
}

Jeg er da 100% ligeglad med erikjacobsen leger helgen herinde, hvis han er ligeglad med point så forklar hvordan han har fået så mange ?

Hvis du i fremtiden gerne vil have hjælp vil jeg råde dig til at ændre din attitude, for vi er mange herinde på sitet som ikke gider høre på din attitude.

p.s. der var landet et ; pga klyt copy/paste, jeg prøvede nemlig dine ISBN numre i mit udviklingsmiljø og kun den med 'X' var gyldig pga ingen checksum, så opdagede jeg det ; som ved en fejl var landet i svaret.
Avatar billede tingholm Mester
03. oktober 2002 - 21:07 #38
tak for hjælpen soreno :o)
Avatar billede tingholm Mester
03. oktober 2002 - 23:02 #39
jaja whatever disky, du får 50 points og jeg får ro !! (du tar' det alt for højtideligt, der er altså ikke noget på spil her !!)
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