Hallo Leute...
Ich bin noch relativ unerfahren was Programmieren angeht und habe folgendes Problem:
Ich möchte einen String nach dem größtmöglichen Produkt aus 13 aufeinanderfolgenden Zahlen durchsuchen. Dazu habe ich folgendes Programm geschrieben:
Das ausgegebene Endergebnis ist jedoch falsch. Wenn ich mir allerdings jedes zwischenzeitliche Maximum ausgeben lasse ist das richtige Ergebis dabei. Das Programm findet aber anschließend weiter Maxima die es aber nicht geben dürfte. Leider finde ich den Fehler nicht und hoffe ihr könnt mir dabei helfen.
Ich bin noch relativ unerfahren was Programmieren angeht und habe folgendes Problem:
Ich möchte einen String nach dem größtmöglichen Produkt aus 13 aufeinanderfolgenden Zahlen durchsuchen. Dazu habe ich folgendes Programm geschrieben:
Java:
public class LargestProductInASeries {
public static void main(String[] args) {
String string = "73167176531330624919225119674426574742355349194934"+
"96983520312774506326239578318016984801869478851843"+
"85861560789112949495459501737958331952853208805511"+
"12540698747158523863050715693290963295227443043557"+
"66896648950445244523161731856403098711121722383113"+
"62229893423380308135336276614282806444486645238749"+
"30358907296290491560440772390713810515859307960866"+
"70172427121883998797908792274921901699720888093776"+
"65727333001053367881220235421809751254540594752243"+
"52584907711670556013604839586446706324415722155397"+
"53697817977846174064955149290862569321978468622482"+
"83972241375657056057490261407972968652414535100474"+
"82166370484403199890008895243450658541227588666881"+
"16427171479924442928230863465674813919123162824586"+
"17866458359124566529476545682848912883142607690042"+
"24219022671055626321111109370544217506941658960408"+
"07198403850962455444362981230987879927244284909188"+
"84580156166097919133875499200524063689912560717606"+
"05886116467109405077541002256983155200055935729725"+
"71636269561882670428252483600823257530420752963450";
long max =0;
int numbarray[]= new int [13];
for (int i=0;i<=string.length()-13;i++){
String sub = string.substring(i, i+13);
for(int j=0;j<sub.length();j++){
numbarray[j]=(int)sub.charAt(j)-48;
long product = 1;
for (int x:numbarray){
product*=x;
if(product>max){
max=product;
}
}
}
}
System.out.print(max);
}
}
Das ausgegebene Endergebnis ist jedoch falsch. Wenn ich mir allerdings jedes zwischenzeitliche Maximum ausgeben lasse ist das richtige Ergebis dabei. Das Programm findet aber anschließend weiter Maxima die es aber nicht geben dürfte. Leider finde ich den Fehler nicht und hoffe ihr könnt mir dabei helfen.