我想知道如何解决这个问题(这不是学校的东西,我是业余爱好,我正在做欧拉的练习)。我的代码中的问题是:char c = great.charAt(i); 我想知道如何在great.charAt(i)中看到下一个i。我发布了代码,在此先感谢您的帮助。
// Find the greatest product of five consecutive digits in the 1000-digit number import java.util.*; import java.io.*; public class FIVE { public static void main(String args[]) { try{ String greatest = "73167176531330624919225119674426574742355349194934969835203127745063262395783180169848018694788518438586156078911294949545950173795833195285320880551112540698747158523863050715693290963295227443043557668966489504452445231617318564030987111217223831136222989342338030813533627661428280644448664523874930358907296290491560440772390713810515859307960866701724271218839987979087922749219016997208880937766572733300105336788122023542180975125454059475224352584907711670556013604839586446706324415722155397 53697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450"; long TheNUMBER = 0; long n = 0; long count = 0; long provvisoryBiggest = 0; long countZERO = 0; long countBLOCK = 0; long X = 0; for ( int i=0; i < greatest.lenght(); i++) { for(int j=0; j<5; j++) { if(X == 0) { X = 1; } char c = greatest.charAt(i); n = Character.getNumericValue(c); count++; System.out.println(count + "th number: " + n); X = (X * n ); System.out.println("The product is: " + X); while (provvisoryBiggest < X) { provvisoryBiggest = X; } while(count == 5) { System.out.println("Now the biggest one is: " + provvisoryBiggest); count = countZERO; X = countZERO; countBLOCK++; System.out.println("Block number: "+ countBLOCK); System.out.println("------------------------------------"); } } } } catch(ArrayIndexOutOfBoundsException ex) { System.out.println("ARRAY ERROR"); } catch(ArithmeticException ex) { System.out.println("MATH ERROR");} catch(NumberFormatException ex) { System.out.println("NUMBER FORMAT EXCEPTION");} catch(StringIndexOutOfBoundsException ex) { System.out.println("INDEX ERROR"); } }}
查看程序的输出,我看到它具有如下所示的块:
1th number: 8 The product is: 8 2th number: 8 The product is: 64 3th number: 8 The product is: 512 4th number: 8 The product is: 4096 5th number: 8 The product is: 32768 Now the biggest one is: 59049 Block number: 684
这说明,对于五个数字的子序列,您实际上只是将其中一个数字乘以五倍。
您需要确保迭代该子序列才能获得产品。
看来问题出在您的行上greatest.charAt(i)。实际上,您需要添加偏移量j以获取五位数子序列中的每一位数。
greatest.charAt(i)
j