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;
}
}