Project Euler 17

sserio

Bekanntes Mitglied
Bis her die nervigste Aufgabe und ich weiß einfach nicht wiese er mir nur die länge von "ninety" ausgibt aber dann die 9 nicht überprüft. Er iteriert über das array findet aber die 9 nicht !?!?!? Richtig oft mit dem Debugger rübergegangen ... ohne erfolg
Java:
public class Main {
    public static void main(String... args) {
        System.out.println(berechnungMoeglichBis99(99 ));
    }

    public static Value[] createArray() {
        Value[] array = new Value[]{
                new Value(1, "one"),
                new Value(2, "two"),
                new Value(3, "three"),
                new Value(4, "four"),
                new Value(5, "five"),
                new Value(6, "six"),
                new Value(7, "seven"),
                new Value(8, "eight"),
                new Value(9, "nine"),
                new Value(10, "ten"),
                new Value(11, "eleven"),
                new Value(12, "twelve"),
                new Value(13, "thirteen"),
                new Value(14, "fourteen"),
                new Value(15, "fifteen"),
                new Value(16, "sixteen"),
                new Value(17, "seventeen"),
                new Value(18, "eighteen"),
                new Value(19, "nineteen"),
                new Value(20, "twenty"),
                new Value(30, "thirty"),
                new Value(40, "forty"),
                new Value(50, "fifty"),
                new Value(60, "sixty"),
                new Value(70, "seventy"),
                new Value(80, "eighty"),
                new Value(90, "ninety")
                //hundred and
                //one hundred
                //thousand
                    // ... extra behandeln
        };
        return array;
    }

 

    public static int berechnungMoeglichBis99(int number) {
        if (number > 99 || number < 1) {
            throw new IllegalArgumentException("Muss mindestens 1 bis 99 sein!");
        }
        int counter = 0;
        if (number < 20) {
            for (Value v : createArray()) {
                if (number == v.getNumber()) {
                    counter += v.getName().length();
                    break;
                }
            }
        }
        if (number > 19 && number < 100) {
            var zehner = splitNumberToZehner(number);
            for (Value v : createArray()) {
                if (zehner == v.getNumber()) {
                    counter += v.getName().length();
                    break;
                }
            }
            int einer = getLastNumber(number);
            for (Value v : createArray()) {
                if (einer == v.getNumber()) {
                    counter += v.getName().length();
                    break;
                }
            }
        }

        return counter;
    }

    public static int getLastNumber(int number) {
        if (getLength(number) == 2)
            return Integer.parseInt(String.valueOf(number).substring(1, 2));
        else
            return Integer.parseInt(String.valueOf(number).substring(2, 3));
    }

    public static int getFirstNumber(int number) {
        return Integer.parseInt(String.valueOf(number).substring(0, 1));
    }

    public static int splitNumberToZehner(int number) {
        if (number < 10) {
            throw new IllegalArgumentException("Number has to be at least 10");
        }
        number = number % 100;
        if (number > 9) {
            number = number - number % 10;
        }
        return number;
    }

    public static int getLength(int number) {
        return String.valueOf(number).length();
    }
}
package ProjectEuler17;

public class Value {
    static Integer number;
    static String name;

    public Value(Integer number, String name) {
        this.number = number;
        this.name = name;
    }

    public  Integer getNumber() {
        return number;
    }

    public  String getName() {
        return name;
    }
}
 

sserio

Bekanntes Mitglied
Ich habe jetzt andere Beispiele auch benutzt ... er findet die numbers einfach nicht ? wieso ... also in dem array
 

Oneixee5

Top Contributor
Denke mal darüber nach, was das static hier macht:
[CODE lang="java" highlight="2-3"]public class Value {
static Integer number;
static String name;

public Value(Integer number, String name) {
this.number = number;
this.name = name;
}

public Integer getNumber() {
return number;
}

public String getName() {
return name;
}
}[/CODE]
Java:
...
    Value[] array = new Value[]{
                new Value(1, "one"),
                new Value(2, "two"),
...
 

Jw456

Top Contributor
Tipp lasse dir doch mal das von createArray() zurückgegene Array auf der Konsole ausgeben.
Java:
 for (Value v : createArray()) {
                System.out.prinln("Number : "+ v.getNumber());
                System.out.println("Name : " + v.getName());
            }

dann solltest du den Tipp von Oneixee5 auch verstehen.
 

sserio

Bekanntes Mitglied
Denke mal darüber nach, was das static hier macht:
[CODE lang="java" highlight="2-3"]public class Value {
static Integer number;
static String name;

public Value(Integer number, String name) {
this.number = number;
this.name = name;
}

public Integer getNumber() {
return number;
}

public String getName() {
return name;
}
}[/CODE]
Java:
...
    Value[] array = new Value[]{
                new Value(1, "one"),
                new Value(2, "two"),
...
Tipp lasse dir doch mal das von createArray() zurückgegene Array auf der Konsole ausgeben.
Java:
 for (Value v : createArray()) {
                System.out.prinln("Number : "+ v.getNumber());
                System.out.println("Name : " + v.getName());
            }

dann solltest du den Tipp von Oneixee5 auch verstehen.
Habe es jetzt verstanden, dass dann nur der letzte Wert verwendet wird... aber wie soll ich den array dann verwenden ich static nicht verwenden kann.... ich will ja jetzt nicht diesen array in alle methoden etc und die main reinschreiben... einfach als Parameter der klasse main machen ?
 

sserio

Bekanntes Mitglied
du sollst das statig bei den argumente n
Java:
package ProjectEuler17;
public class Main {
    public static void main(String... args) {
        Value[] array = new Value[]{
                new Value(1, "one"),
                new Value(2, "two"),
                new Value(3, "three"),
                new Value(4, "four"),
                new Value(5, "five"),
                new Value(6, "six"),
                new Value(7, "seven"),
                new Value(8, "eight"),
                new Value(9, "nine"),
                new Value(10, "ten"),
                new Value(11, "eleven"),
                new Value(12, "twelve"),
                new Value(13, "thirteen"),
                new Value(14, "fourteen"),
                new Value(15, "fifteen"),
                new Value(16, "sixteen"),
                new Value(17, "seventeen"),
                new Value(18, "eighteen"),
                new Value(19, "nineteen"),
                new Value(20, "twenty"),
                new Value(30, "thirty"),
                new Value(40, "forty"),
                new Value(50, "fifty"),
                new Value(60, "sixty"),
                new Value(70, "seventy"),
                new Value(80, "eighty"),
                new Value(90, "ninety")
                //hundred and
                //one hundred
                //thousand
        };
       for(Value v: array )
           System.out.println(v.getName() + " " + v.getNumber());
    }


    public static int berechnungMoeglichBis99(int number,Value[] array) {
        if (number > 99 || number < 1) {
            throw new IllegalArgumentException("Muss mindestens 1 bis 99 sein!");
        }
        int counter = 0;
        if (number < 20) {
            for (Value v : array) {
                if (number == v.getNumber()) {
                    counter += v.getName().length();
                    break;
                }
            }
        }
        if (number > 19 && number < 100) {
            var zehner = splitNumberToZehner(number);
            for (Value v : array) {
                if (zehner == v.getNumber()) {
                    counter += v.getName().length();
                    break;
                }
            }
            int einer = getLastNumber(number);
            for (Value v : array) {
                if (einer == v.getNumber()) {
                    counter += v.getName().length();
                    break;
                }
            }
        }

        return counter;
    }

    public static int getLastNumber(int number) {
        if (getLength(number) == 2)
            return Integer.parseInt(String.valueOf(number).substring(1, 2));
        else
            return Integer.parseInt(String.valueOf(number).substring(2, 3));
    }

    public static int getFirstNumber(int number) {
        return Integer.parseInt(String.valueOf(number).substring(0, 1));
    }

    public static int splitNumberToZehner(int number) {
        if (number < 10) {
            throw new IllegalArgumentException("Number has to be at least 10");
        }
        number = number % 100;
        if (number > 9) {
            number = number - number % 10;
        }
        return number;
    }

    public static int getLength(int number) {
        return String.valueOf(number).length();
    }


}
klappt nicht
 

sserio

Bekanntes Mitglied
Java:
package ProjectEuler17;
public class Main {
    public static void main(String... args) {
        Value[] array = new Value[]{
                new Value(1, "one"),
                new Value(2, "two"),
                new Value(3, "three"),
                new Value(4, "four"),
                new Value(5, "five"),
                new Value(6, "six"),
                new Value(7, "seven"),
                new Value(8, "eight"),
                new Value(9, "nine"),
                new Value(10, "ten"),
                new Value(11, "eleven"),
                new Value(12, "twelve"),
                new Value(13, "thirteen"),
                new Value(14, "fourteen"),
                new Value(15, "fifteen"),
                new Value(16, "sixteen"),
                new Value(17, "seventeen"),
                new Value(18, "eighteen"),
                new Value(19, "nineteen"),
                new Value(20, "twenty"),
                new Value(30, "thirty"),
                new Value(40, "forty"),
                new Value(50, "fifty"),
                new Value(60, "sixty"),
                new Value(70, "seventy"),
                new Value(80, "eighty"),
                new Value(90, "ninety")
                //hundred and
                //one hundred
                //thousand
        };
       for(Value v: array )
           System.out.println(v.getName() + " " + v.getNumber());
    }


    public static int berechnungMoeglichBis99(int number,Value[] array) {
        if (number > 99 || number < 1) {
            throw new IllegalArgumentException("Muss mindestens 1 bis 99 sein!");
        }
        int counter = 0;
        if (number < 20) {
            for (Value v : array) {
                if (number == v.getNumber()) {
                    counter += v.getName().length();
                    break;
                }
            }
        }
        if (number > 19 && number < 100) {
            var zehner = splitNumberToZehner(number);
            for (Value v : array) {
                if (zehner == v.getNumber()) {
                    counter += v.getName().length();
                    break;
                }
            }
            int einer = getLastNumber(number);
            for (Value v : array) {
                if (einer == v.getNumber()) {
                    counter += v.getName().length();
                    break;
                }
            }
        }

        return counter;
    }

    public static int getLastNumber(int number) {
        if (getLength(number) == 2)
            return Integer.parseInt(String.valueOf(number).substring(1, 2));
        else
            return Integer.parseInt(String.valueOf(number).substring(2, 3));
    }

    public static int getFirstNumber(int number) {
        return Integer.parseInt(String.valueOf(number).substring(0, 1));
    }

    public static int splitNumberToZehner(int number) {
        if (number < 10) {
            throw new IllegalArgumentException("Number has to be at least 10");
        }
        number = number % 100;
        if (number > 9) {
            number = number - number % 10;
        }
        return number;
    }

    public static int getLength(int number) {
        return String.valueOf(number).length();
    }


}
klappt nicht
irgendwas stimmt nicht es werden immer nur ninety's und 90 er ausgegeben
 

sserio

Bekanntes Mitglied
Ich bin jetzt fertig mit dem Code, kann bisschen "overwhealming" rüber kommen, jedoch habe ich ein Problem ... ich bin 24 über dem Ergebnis 11124 , aber bei zufälligem Rauspicken und nachzählen hat alles gut ausgesehen und alle 10 Probanden
Java:
package ProjectEuler17;


public class Main {
    public static void main(String... args) {
        System.out.println(getSpelledLettersValue(1000));
    }

    public static Value[] createArray() {
        Value[] array = new Value[]{
                new Value(1, "one"),
                new Value(2, "two"),
                new Value(3, "three"),
                new Value(4, "four"),
                new Value(5, "five"),
                new Value(6, "six"),
                new Value(7, "seven"),
                new Value(8, "eight"),
                new Value(9, "nine"),
                new Value(10, "ten"),
                new Value(11, "eleven"),
                new Value(12, "twelve"),
                new Value(13, "thirteen"),
                new Value(14, "fourteen"),
                new Value(15, "fifteen"),
                new Value(16, "sixteen"),
                new Value(17, "seventeen"),
                new Value(18, "eighteen"),
                new Value(19, "nineteen"),
                new Value(20, "twenty"),
                new Value(30, "thirty"),
                new Value(40, "forty"),
                new Value(50, "fifty"),
                new Value(60, "sixty"),
                new Value(70, "seventy"),
                new Value(80, "eighty"),
                new Value(90, "ninety")
                //hundred and
                //one hundred
                //thousand
        };
        return array;
    }

    public static int getSpelledLettersValue(int limit) {
        if (limit > 1000 || limit < 1) {
            throw new IllegalArgumentException("Limit has to be above 0 and under 1001");
        }
        var counter = 0;
        for (var i = 1; i <= limit; i++) {
            counter += loese(i);

                System.out.printf("%14d %24d ", i, loese(i));
                System.out.println();

        }
        return counter;
    }

    public static int loese(int number) {
        //1-99
        var value = 0;
        if (number < 100) {
            value += berechnungMoeglichBis99(number);

        }
        //100
        if (number == 100) {
            value += 10;
        }
        //101-999
        if (number > 100 && number < 1000) {
            var temp = getFirstNumber(number);
            for (Value v : createArray()) {
                if (temp == v.getNumber()) {
                    value += v.getName().length();
                    break;
                }
            }
            value += "hundredand".length();
            var iTemp = getTwoLastNumbers(number);
            value += berechnungMoeglichBis99(iTemp);

        }
        //1000
        if (number == 1000) {
            value += "onethousand".length();
        }
        return value;
    }

    public static int berechnungMoeglichBis99(int number) {
        if (number > 99) {
            throw new IllegalArgumentException("Muss mindestens 1 bis 99 sein!");
        }
        if (number == 0) return 0;
        int counter = 0;
        if (number < 20) {
            for (Value v : createArray()) {
                if (number == v.getNumber()) {
                    counter += v.getName().length();
                    break;
                }
            }
        }
        if (number > 19) {
            var zehner = splitNumberToZehner(number);
            for (Value v : createArray()) {
                if (zehner == v.getNumber()) {
                    counter += v.getName().length();
                    break;
                }
            }
            int einer = getLastNumber(number);
            for (Value v : createArray()) {
                if (einer == v.getNumber()) {
                    counter += v.getName().length();
                    break;
                }
            }
        }

        return counter;
    }

    public static int getLastNumber(int number) {
        if (getLength(number) == 2)
            return Integer.parseInt(String.valueOf(number).substring(1, 2));
        else
            return Integer.parseInt(String.valueOf(number).substring(2, 3));
    }

    public static int getFirstNumber(int number) {
        return Integer.parseInt(String.valueOf(number).substring(0, 1));
    }

    public static int splitNumberToZehner(int number) {
        if (number < 10) {
            throw new IllegalArgumentException("Number has to be at least 10");
        }
        number = number % 100;
        if (number > 9) {
            number = number - number % 10;
        }
        return number;
    }

    public static int getTwoLastNumbers(int number) {
        if (number < 10)
            throw new IllegalArgumentException("The number has to be bigger then 10");
        if (getLength(number) == 2) {
            return number;
        } else {
            return Integer.parseInt(String.valueOf(number).substring(1, 3));
        }

    }

    public static int getLength(int number) {
        return String.valueOf(number).length();
    }


}
package ProjectEuler17;

public class Value {
     Integer number;
     String name;

    public Value(Integer number, String name) {
        this.number = number;
        this.name = name;
    }

    public  Integer getNumber() {
        return number;
    }

    public  String getName() {
        return name;
    }
}
waren richtig
 

sserio

Bekanntes Mitglied
Ich bin jetzt fertig mit dem Code, kann bisschen "overwhealming" rüber kommen, jedoch habe ich ein Problem ... ich bin 24 über dem Ergebnis 11124 , aber bei zufälligem Rauspicken und nachzählen hat alles gut ausgesehen und alle 10 Probanden
Java:
package ProjectEuler17;


public class Main {
    public static void main(String... args) {
        System.out.println(getSpelledLettersValue(1000));
    }

    public static Value[] createArray() {
        Value[] array = new Value[]{
                new Value(1, "one"),
                new Value(2, "two"),
                new Value(3, "three"),
                new Value(4, "four"),
                new Value(5, "five"),
                new Value(6, "six"),
                new Value(7, "seven"),
                new Value(8, "eight"),
                new Value(9, "nine"),
                new Value(10, "ten"),
                new Value(11, "eleven"),
                new Value(12, "twelve"),
                new Value(13, "thirteen"),
                new Value(14, "fourteen"),
                new Value(15, "fifteen"),
                new Value(16, "sixteen"),
                new Value(17, "seventeen"),
                new Value(18, "eighteen"),
                new Value(19, "nineteen"),
                new Value(20, "twenty"),
                new Value(30, "thirty"),
                new Value(40, "forty"),
                new Value(50, "fifty"),
                new Value(60, "sixty"),
                new Value(70, "seventy"),
                new Value(80, "eighty"),
                new Value(90, "ninety")
                //hundred and
                //one hundred
                //thousand
        };
        return array;
    }

    public static int getSpelledLettersValue(int limit) {
        if (limit > 1000 || limit < 1) {
            throw new IllegalArgumentException("Limit has to be above 0 and under 1001");
        }
        var counter = 0;
        for (var i = 1; i <= limit; i++) {
            counter += loese(i);

                System.out.printf("%14d %24d ", i, loese(i));
                System.out.println();

        }
        return counter;
    }

    public static int loese(int number) {
        //1-99
        var value = 0;
        if (number < 100) {
            value += berechnungMoeglichBis99(number);

        }
        //100
        if (number == 100) {
            value += 10;
        }
        //101-999
        if (number > 100 && number < 1000) {
            var temp = getFirstNumber(number);
            for (Value v : createArray()) {
                if (temp == v.getNumber()) {
                    value += v.getName().length();
                    break;
                }
            }
            value += "hundredand".length();
            var iTemp = getTwoLastNumbers(number);
            value += berechnungMoeglichBis99(iTemp);

        }
        //1000
        if (number == 1000) {
            value += "onethousand".length();
        }
        return value;
    }

    public static int berechnungMoeglichBis99(int number) {
        if (number > 99) {
            throw new IllegalArgumentException("Muss mindestens 1 bis 99 sein!");
        }
        if (number == 0) return 0;
        int counter = 0;
        if (number < 20) {
            for (Value v : createArray()) {
                if (number == v.getNumber()) {
                    counter += v.getName().length();
                    break;
                }
            }
        }
        if (number > 19) {
            var zehner = splitNumberToZehner(number);
            for (Value v : createArray()) {
                if (zehner == v.getNumber()) {
                    counter += v.getName().length();
                    break;
                }
            }
            int einer = getLastNumber(number);
            for (Value v : createArray()) {
                if (einer == v.getNumber()) {
                    counter += v.getName().length();
                    break;
                }
            }
        }

        return counter;
    }

    public static int getLastNumber(int number) {
        if (getLength(number) == 2)
            return Integer.parseInt(String.valueOf(number).substring(1, 2));
        else
            return Integer.parseInt(String.valueOf(number).substring(2, 3));
    }

    public static int getFirstNumber(int number) {
        return Integer.parseInt(String.valueOf(number).substring(0, 1));
    }

    public static int splitNumberToZehner(int number) {
        if (number < 10) {
            throw new IllegalArgumentException("Number has to be at least 10");
        }
        number = number % 100;
        if (number > 9) {
            number = number - number % 10;
        }
        return number;
    }

    public static int getTwoLastNumbers(int number) {
        if (number < 10)
            throw new IllegalArgumentException("The number has to be bigger then 10");
        if (getLength(number) == 2) {
            return number;
        } else {
            return Integer.parseInt(String.valueOf(number).substring(1, 3));
        }

    }

    public static int getLength(int number) {
        return String.valueOf(number).length();
    }


}
package ProjectEuler17;

public class Value {
     Integer number;
     String name;

    public Value(Integer number, String name) {
        this.number = number;
        this.name = name;
    }

    public  Integer getNumber() {
        return number;
    }

    public  String getName() {
        return name;
    }
}
waren richtig
180 Zeilen code für so eine aufgabe muss man aber auch erstmal schaffen :(
 

mihe7

Top Contributor
ich weiß halt von static, dass man dann methoden irgendwie in der ganzen Klasse verwenden kann. Aber dass man das dann auch vor Variablen packen kann o_O ..
static heißt vereinfacht, dass es sich um eine Methode/Variable handelt, auf die ohne Objekt der Klasse zugegriffen werden kann. Das ist ok für insbesondere den Programmeinstiegspunkt (main) oder Konstanten (PI ist immer PI). Wenn man es mit static allerdings übertreibt, hat man keine Objektorientierung mehr -> wo keine Objekte, da auch keine Objektorientierung.

Daher gilt gerade für Anfänger der Hinweis: static nur bei main und bei Konstanten (public static final), alles andere non-static.
 

Jw456

Top Contributor
Benutze in Zukunft ein Objekt deiner Klasse.
dann brauchst du das static bei den Methoden nicht.

Java:
public static void main(String[] args) {
        Main main = new Main();
        System.out.println(main.getSpelledLettersValue(10));
    }
 

sserio

Bekanntes Mitglied
Benutze in Zukunft ein Objekt deiner Klasse.
dann brauchst du das static bei den Methoden nicht.

Java:
public static void main(String[] args) {
        Main main = new Main();
        System.out.println(main.getSpelledLettersValue(10));
    }
hmm ok ... hättest du ne idee wieso es 24 zu viel sind
 

Jw456

Top Contributor
Was willst du eigentlich mit deinem Code berechnen ?
Doch wohl wievielle Buchstaben eine Zahl hat .

Bei deinem Code kommt zb bei 21 als Ergebnis 121 raus was nicht stimmt.
Twenty one sind 9 Buchstaben.
 

sserio

Bekanntes Mitglied
Was willst du eigentlich mit deinem Code berechnen ?
Doch wohl wievielle Buchstaben eine Zahl hat .

Bei deinem Code kommt zb bei 21 als Ergebnis 121 raus was nicht stimmt.
Twenty one sind 9 Buchstaben.
Java:
 1                        3
             2                        3
             3                        5
             4                        4
             5                        4
             6                        3
             7                        5
             8                        5
             9                        4
            10                        3
            11                        6
            12                        6
            13                        8
            14                        8
            15                        7
            16                        7
            17                        9
            18                        8
            19                        8
            20                        6
            21                        9
            22                        9
            23                       11
            24                       10
            25                       10
            26                        9
            27                       11
            28                       11
            29                       10
            30                        6
            31                        9
            32                        9
            33                       11
            34                       10
            35                       10
            36                        9
            37                       11
            38                       11
            39                       10
            40                        5
            41                        8
            42                        8
            43                       10
            44                        9
            45                        9
            46                        8
            47                       10
            48                       10
            49                        9
            50                        5
            51                        8
            52                        8
            53                       10
            54                        9
            55                        9
            56                        8
            57                       10
            58                       10
            59                        9
            60                        5
            61                        8
            62                        8
            63                       10
            64                        9
            65                        9
            66                        8
            67                       10
            68                       10
            69                        9
            70                        7
            71                       10
            72                       10
            73                       12
            74                       11
            75                       11
            76                       10
            77                       12
            78                       12
            79                       11
            80                        6
            81                        9
            82                        9
            83                       11
            84                       10
            85                       10
            86                        9
            87                       11
            88                       11
            89                       10
            90                        6
            91                        9
            92                        9
            93                       11
            94                       10
            95                       10
            96                        9
            97                       11
            98                       11
            99                       10
           100                       10
           101                       16
           102                       16
           103                       18
           104                       17
           105                       17
           106                       16
           107                       18
           108                       18
           109                       17
           110                       16
           111                       19
           112                       19
           113                       21
           114                       21
           115                       20
           116                       20
           117                       22
           118                       21
           119                       21
           120                       19
           121                       22
           122                       22
           123                       24
           124                       23
           125                       23
           126                       22
           127                       24
           128                       24
           129                       23
           130                       19
           131                       22
           132                       22
           133                       24
           134                       23
           135                       23
           136                       22
           137                       24
           138                       24
           139                       23
           140                       18
           141                       21
           142                       21
           143                       23
           144                       22
           145                       22
           146                       21
           147                       23
           148                       23
           149                       22
           150                       18
           151                       21
           152                       21
           153                       23
           154                       22
           155                       22
           156                       21
           157                       23
           158                       23
           159                       22
           160                       18
           161                       21
           162                       21
           163                       23
           164                       22
           165                       22
           166                       21
           167                       23
           168                       23
           169                       22
           170                       20
           171                       23
           172                       23
           173                       25
           174                       24
           175                       24
           176                       23
           177                       25
           178                       25
           179                       24
           180                       19
           181                       22
           182                       22
           183                       24
           184                       23
           185                       23
           186                       22
           187                       24
           188                       24
           189                       23
           190                       19
           191                       22
           192                       22
           193                       24
           194                       23
           195                       23
           196                       22
           197                       24
           198                       24
           199                       23
           200                       13
           201                       16
           202                       16
           203                       18
           204                       17
           205                       17
           206                       16
           207                       18
           208                       18
           209                       17
           210                       16
           211                       19
           212                       19
           213                       21
           214                       21
           215                       20
           216                       20
           217                       22
           218                       21
           219                       21
           220                       19
           221                       22
           222                       22
           223                       24
           224                       23
           225                       23
           226                       22
           227                       24
           228                       24
           229                       23
           230                       19
           231                       22
           232                       22
           233                       24
           234                       23
           235                       23
           236                       22
           237                       24
           238                       24
           239                       23
           240                       18
           241                       21
           242                       21
           243                       23
           244                       22
           245                       22
           246                       21
           247                       23
           248                       23
           249                       22
           250                       18
           251                       21
           252                       21
           253                       23
           254                       22
           255                       22
           256                       21
           257                       23
           258                       23
           259                       22
           260                       18
           261                       21
           262                       21
           263                       23
           264                       22
           265                       22
           266                       21
           267                       23
           268                       23
           269                       22
           270                       20
           271                       23
           272                       23
           273                       25
           274                       24
           275                       24
           276                       23
           277                       25
           278                       25
           279                       24
           280                       19
           281                       22
           282                       22
           283                       24
           284                       23
           285                       23
           286                       22
           287                       24
           288                       24
           289                       23
           290                       19
           291                       22
           292                       22
           293                       24
           294                       23
           295                       23
           296                       22
           297                       24
           298                       24
           299                       23
           300                       15
           301                       18
           302                       18
           303                       20
           304                       19
           305                       19
           306                       18
           307                       20
           308                       20
           309                       19
           310                       18
           311                       21
           312                       21
           313                       23
           314                       23
           315                       22
           316                       22
           317                       24
           318                       23
           319                       23
           320                       21
           321                       24
           322                       24
           323                       26
           324                       25
           325                       25
           326                       24
           327                       26
           328                       26
           329                       25
           330                       21
           331                       24
           332                       24
           333                       26
           334                       25
           335                       25
           336                       24
           337                       26
           338                       26
           339                       25
           340                       20
           341                       23
           342                       23
           343                       25
           344                       24
           345                       24
           346                       23
           347                       25
           348                       25
           349                       24
           350                       20
           351                       23
           352                       23
           353                       25
           354                       24
           355                       24
           356                       23
           357                       25
           358                       25
           359                       24
           360                       20
           361                       23
           362                       23
           363                       25
           364                       24
           365                       24
           366                       23
           367                       25
           368                       25
           369                       24
           370                       22
           371                       25
           372                       25
           373                       27
           374                       26
           375                       26
           376                       25
           377                       27
           378                       27
           379                       26
           380                       21
           381                       24
           382                       24
           383                       26
           384                       25
           385                       25
           386                       24
           387                       26
           388                       26
           389                       25
           390                       21
           391                       24
           392                       24
           393                       26
           394                       25
           395                       25
           396                       24
           397                       26
           398                       26
           399                       25
           400                       14
           401                       17
           402                       17
           403                       19
           404                       18
           405                       18
           406                       17
           407                       19
           408                       19
           409                       18
           410                       17
           411                       20
           412                       20
           413                       22
           414                       22
           415                       21
           416                       21
           417                       23
           418                       22
           419                       22
           420                       20
           421                       23
           422                       23
           423                       25
           424                       24
           425                       24
           426                       23
           427                       25
           428                       25
           429                       24
           430                       20
           431                       23
           432                       23
           433                       25
           434                       24
           435                       24
           436                       23
           437                       25
           438                       25
           439                       24
           440                       19
           441                       22
           442                       22
           443                       24
           444                       23
           445                       23
           446                       22
           447                       24
           448                       24
           449                       23
           450                       19
           451                       22
           452                       22
           453                       24
           454                       23
           455                       23
           456                       22
           457                       24
           458                       24
           459                       23
           460                       19
           461                       22
           462                       22
           463                       24
           464                       23
           465                       23
           466                       22
           467                       24
           468                       24
           469                       23
           470                       21
           471                       24
           472                       24
           473                       26
           474                       25
           475                       25
           476                       24
           477                       26
           478                       26
           479                       25
           480                       20
           481                       23
           482                       23
           483                       25
           484                       24
           485                       24
           486                       23
           487                       25
           488                       25
           489                       24
           490                       20
           491                       23
           492                       23
           493                       25
           494                       24
           495                       24
           496                       23
           497                       25
           498                       25
           499                       24
           500                       14
           501                       17
           502                       17
           503                       19
           504                       18
           505                       18
           506                       17
           507                       19
           508                       19
           509                       18
           510                       17
           511                       20
           512                       20
           513                       22
           514                       22
           515                       21
           516                       21
           517                       23
           518                       22
           519                       22
           520                       20
           521                       23
           522                       23
           523                       25
           524                       24
           525                       24
           526                       23
           527                       25
           528                       25
           529                       24
           530                       20
           531                       23
           532                       23
           533                       25
           534                       24
           535                       24
           536                       23
           537                       25
           538                       25
           539                       24
           540                       19
           541                       22
           542                       22
           543                       24
           544                       23
           545                       23
           546                       22
           547                       24
           548                       24
           549                       23
           550                       19
           551                       22
           552                       22
           553                       24
           554                       23
           555                       23
           556                       22
           557                       24
           558                       24
           559                       23
           560                       19
           561                       22
           562                       22
           563                       24
           564                       23
           565                       23
           566                       22
           567                       24
           568                       24
           569                       23
           570                       21
           571                       24
           572                       24
           573                       26
           574                       25
           575                       25
           576                       24
           577                       26
           578                       26
           579                       25
           580                       20
           581                       23
           582                       23
           583                       25
           584                       24
           585                       24
           586                       23
           587                       25
           588                       25
           589                       24
           590                       20
           591                       23
           592                       23
           593                       25
           594                       24
           595                       24
           596                       23
           597                       25
           598                       25
           599                       24
           600                       13
           601                       16
           602                       16
           603                       18
           604                       17
           605                       17
           606                       16
           607                       18
           608                       18
           609                       17
           610                       16
           611                       19
           612                       19
           613                       21
           614                       21
           615                       20
           616                       20
           617                       22
           618                       21
           619                       21
           620                       19
           621                       22
           622                       22
           623                       24
           624                       23
           625                       23
           626                       22
           627                       24
           628                       24
           629                       23
           630                       19
           631                       22
           632                       22
           633                       24
           634                       23
           635                       23
           636                       22
           637                       24
           638                       24
           639                       23
           640                       18
           641                       21
           642                       21
           643                       23
           644                       22
           645                       22
           646                       21
           647                       23
           648                       23
           649                       22
           650                       18
           651                       21
           652                       21
           653                       23
           654                       22
           655                       22
           656                       21
           657                       23
           658                       23
           659                       22
           660                       18
           661                       21
           662                       21
           663                       23
           664                       22
           665                       22
           666                       21
           667                       23
           668                       23
           669                       22
           670                       20
           671                       23
           672                       23
           673                       25
           674                       24
           675                       24
           676                       23
           677                       25
           678                       25
           679                       24
           680                       19
           681                       22
           682                       22
           683                       24
           684                       23
           685                       23
           686                       22
           687                       24
           688                       24
           689                       23
           690                       19
           691                       22
           692                       22
           693                       24
           694                       23
           695                       23
           696                       22
           697                       24
           698                       24
           699                       23
           700                       15
           701                       18
           702                       18
           703                       20
           704                       19
           705                       19
           706                       18
           707                       20
           708                       20
           709                       19
           710                       18
           711                       21
           712                       21
           713                       23
           714                       23
           715                       22
           716                       22
           717                       24
           718                       23
           719                       23
           720                       21
           721                       24
           722                       24
           723                       26
           724                       25
           725                       25
           726                       24
           727                       26
           728                       26
           729                       25
           730                       21
           731                       24
           732                       24
           733                       26
           734                       25
           735                       25
           736                       24
           737                       26
           738                       26
           739                       25
           740                       20
           741                       23
           742                       23
           743                       25
           744                       24
           745                       24
           746                       23
           747                       25
           748                       25
           749                       24
           750                       20
           751                       23
           752                       23
           753                       25
           754                       24
           755                       24
           756                       23
           757                       25
           758                       25
           759                       24
           760                       20
           761                       23
           762                       23
           763                       25
           764                       24
           765                       24
           766                       23
           767                       25
           768                       25
           769                       24
           770                       22
           771                       25
           772                       25
           773                       27
           774                       26
           775                       26
           776                       25
           777                       27
           778                       27
           779                       26
           780                       21
           781                       24
           782                       24
           783                       26
           784                       25
           785                       25
           786                       24
           787                       26
           788                       26
           789                       25
           790                       21
           791                       24
           792                       24
           793                       26
           794                       25
           795                       25
           796                       24
           797                       26
           798                       26
           799                       25
           800                       15
           801                       18
           802                       18
           803                       20
           804                       19
           805                       19
           806                       18
           807                       20
           808                       20
           809                       19
           810                       18
           811                       21
           812                       21
           813                       23
           814                       23
           815                       22
           816                       22
           817                       24
           818                       23
           819                       23
           820                       21
           821                       24
           822                       24
           823                       26
           824                       25
           825                       25
           826                       24
           827                       26
           828                       26
           829                       25
           830                       21
           831                       24
           832                       24
           833                       26
           834                       25
           835                       25
           836                       24
           837                       26
           838                       26
           839                       25
           840                       20
           841                       23
           842                       23
           843                       25
           844                       24
           845                       24
           846                       23
           847                       25
           848                       25
           849                       24
           850                       20
           851                       23
           852                       23
           853                       25
           854                       24
           855                       24
           856                       23
           857                       25
           858                       25
           859                       24
           860                       20
           861                       23
           862                       23
           863                       25
           864                       24
           865                       24
           866                       23
           867                       25
           868                       25
           869                       24
           870                       22
           871                       25
           872                       25
           873                       27
           874                       26
           875                       26
           876                       25
           877                       27
           878                       27
           879                       26
           880                       21
           881                       24
           882                       24
           883                       26
           884                       25
           885                       25
           886                       24
           887                       26
           888                       26
           889                       25
           890                       21
           891                       24
           892                       24
           893                       26
           894                       25
           895                       25
           896                       24
           897                       26
           898                       26
           899                       25
           900                       14
           901                       17
           902                       17
           903                       19
           904                       18
           905                       18
           906                       17
           907                       19
           908                       19
           909                       18
           910                       17
           911                       20
           912                       20
           913                       22
           914                       22
           915                       21
           916                       21
           917                       23
           918                       22
           919                       22
           920                       20
           921                       23
           922                       23
           923                       25
           924                       24
           925                       24
           926                       23
           927                       25
           928                       25
           929                       24
           930                       20
           931                       23
           932                       23
           933                       25
           934                       24
           935                       24
           936                       23
           937                       25
           938                       25
           939                       24
           940                       19
           941                       22
           942                       22
           943                       24
           944                       23
           945                       23
           946                       22
           947                       24
           948                       24
           949                       23
           950                       19
           951                       22
           952                       22
           953                       24
           954                       23
           955                       23
           956                       22
           957                       24
           958                       24
           959                       23
           960                       19
           961                       22
           962                       22
           963                       24
           964                       23
           965                       23
           966                       22
           967                       24
           968                       24
           969                       23
           970                       21
           971                       24
           972                       24
           973                       26
           974                       25
           975                       25
           976                       24
           977                       26
           978                       26
           979                       25
           980                       20
           981                       23
           982                       23
           983                       25
           984                       24
           985                       24
           986                       23
           987                       25
           988                       25
           989                       24
           990                       20
           991                       23
           992                       23
           993                       25
           994                       24
           995                       24
           996                       23
           997                       25
           998                       25
           999                       24
          1000                       11
21148

Process finished with exit code 0
Nein das kann nicht sein ich habe mir hier alle ausgeben lassen
 

Jw456

Top Contributor
Bis 1000 gibst es im englischen doch kein "und" zwischen den Zahl Wörtern

value += "hundredand".length();
 
Zuletzt bearbeitet:

mihe7

Top Contributor
180 Zeilen code für so eine aufgabe muss man aber auch erstmal schaffen :(
Ich würde das gar nicht negativ sehen: Du hast schon ein Gefühl dafür, dass das "zu viel" ist, dass es eine einfachere Lösung geben müsste. Außerdem ist einiges von den 180 Zeilen auch aufgebläht, wie z. B. die createArray-Methode.

Das ist übrigens ein sehr schönes Problem für den Ansatz "teile und herrsche". Das Problem 17 ist das große Problem und das teilst Du in kleinere Probleme auf, die Du dann zu einer Lösung zusammensetzt.

Hauptproblem: Zähle die Buchstaben einer in Worte ausgeschriebenen Zahl (auf Englisch) zwischen 1 und 1000.

Wenn ich das Problem lese, sehe ich sofort zwei Teilprobleme:
a) Generieren der "Zahl in Worten"
b) Zählen der Buchstaben
 

Jw456

Top Contributor
Bei der aufgabe wird von der Möglichkeit ausgegangen das ein "und" eingeschoben wird.
Was mittlerweile keiner mehr macht.

Gib eine Zahl bei Google ein und du bekommst es ohne "and"

Deshalb auch der Unterschied zu den Tutorials im Netz
 

M.L.

Top Contributor
Weiterhin könnte man Vorab die möglichen Zahlenwerte einschränken und eine HashMap (engl. Wort(teil) als Schlüssel, Anzahl der Buchstaben als Wert) als Datenstruktur verwenden: one ->3, two ->3, ..., eleven -> 6, ...ty ->2, ...teen -> 4, and -> 3, ...hundred -> 7, thousand -> 8, ... Bei einer beliebigen Vorgabe (nicht nur von 1...1000) zählt man nur noch die Anzahl der auftretenden Schlüssel, multipliziert mit deren Wert und addiert dann zusammen.
 

Neumi5694

Top Contributor
xD ... ich weiß halt von static, dass man dann methoden irgendwie in der ganzen Klasse verwenden kann. Aber dass man das dann auch vor Variablen packen kann o_O ..

Math.PI
Das ist eine static final Variable

System.out
... ist zwar ebenfalls mit static final beschrieben (und ist auf null gesetzt), kann aber per System.setOut() gesetzt werden.

Warum sollte man static nicht für Variablen verwenden können sollen? Die haben durchaus ihre Daseinsberechtigung.
Es ist nicht alles von Instanzen abhängig.
 

Jw456

Top Contributor
Ok wenn es wie in der Aufgabe sein soll.

Kommt bei 100 , 200, 300, 400, 500, 600, 700, 800, 900 kein „and“

Bei 100 machst du es richtig nur 10 Buchstaben


Also 8 mal 3 gleich deine 24
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
JavaNewbie2.0 Project Euler Nr1 Java Basics - Anfänger-Themen 5
B Project Euler Problem 10 Java Basics - Anfänger-Themen 1
Fab1 Project Euler problem20 Fakultät von 100 Java Basics - Anfänger-Themen 13
terashy VS Code Project run error Java Basics - Anfänger-Themen 10
E Umlaute und Sonderzeichen werden nach der Build Project nicht richtig angezeigt Java Basics - Anfänger-Themen 2
C Verbesserungsvorschlag für effizienteren Code - (Project Euler10) Java Basics - Anfänger-Themen 26
N Project layout eclipse ( seperate ordner für klassen ? ) Java Basics - Anfänger-Themen 1
J .classpath und .project? Java Basics - Anfänger-Themen 1
V Erste Schritte Erstes Project - Hilfe Java Basics - Anfänger-Themen 9
fLooojava first project - Verbesserungsvorschläge am Code Java Basics - Anfänger-Themen 8
M Exportieren von einem Project Java Basics - Anfänger-Themen 12
Helgon Build Project Java Basics - Anfänger-Themen 4
G was ist der Project class path Java Basics - Anfänger-Themen 7
G OOP Projektabhängigkeiten: A cycle was detected in the build path of project Java Basics - Anfänger-Themen 10
S NetBeans Project erstellen Java Basics - Anfänger-Themen 17
K Export Eclipse-Project unter MAC OS X Java Basics - Anfänger-Themen 2
H exterme class Dateien in Eclipse Project einbinden Java Basics - Anfänger-Themen 1
S Project erschein nach dem Auschecken nicht im Package Explor Java Basics - Anfänger-Themen 4
M Java Project in IDE öffnen? Java Basics - Anfänger-Themen 2
B Hilfe beim Schüler-Project Java Basics - Anfänger-Themen 4
S Eclipse Project Java Basics - Anfänger-Themen 2
C Euler'sche Zahl berechnen, Problem bei for-schleife Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben