I know my code can be made simpler and more efficient but I am trying to get it to work this way.
I want to get the biggest number consisting of 5 digits from the string. I would like to use the subString method. As output, I just get the first 5 numbers, and it doesn't loop through the rest of the string.
public class thousandDigits
{
public static void main(String[] args)
{
String num = new String ("73167176531330624919225119674426574742355349194934" +
"96983520312774506326239578318016984801869478851843" +
"85861560789112949495459501737958331952853208805511" +
"12540698747158523863050715693290963295227443043557" +
"66896648950445244523161731856403098711121722383113" +
"62229893423380308135336276614282806444486645238749" +
"30358907296290491560440772390713810515859307960866" +
"70172427121883998797908792274921901699720888093776" +
"65727333001053367881220235421809751254540594752243" +
"52584907711670556013604839586446706324415722155397" +
"53697817977846174064955149290862569321978468622482" +
"83972241375657056057490261407972968652414535100474" +
"82166370484403199890008895243450658541227588666881" +
"16427171479924442928230863465674813919123162824586" +
"17866458359124566529476545682848912883142607690042" +
"24219022671055626321111109370544217506941658960408" +
"07198403850962455444362981230987879927244284909188" +
"84580156166097919133875499200524063689912560717606" +
"05886116467109405077541002256983155200055935729725" +
"71636269561882670428252483600823257530420752963450") ;
int greatest = 0;
int max = -1;
int numChar = Integer.parseInt(num.substring(0, 5));
for (int i = 0; i < num.length() - 5; i++)
{
greatest = numChar;
if (max < greatest)
{
max = greatest;
}
}
System.out.print(max);
}
}
The output is 7316 but it should be 99890 as the biggest 5 digit number that comes up.
That's because you do not update the numChar inside the loop. You only do it once at the beginning. Also, the calculated substring needs to go from i to i+5 in the loop.
int greatest = 0;
int max = -1;
//int numChar = Integer.parseInt(num.substring(0, 5)); <-- Not Here
for (int i = 0; i < num.length() - 5; i++) {
int numChar = Integer.parseInt(num.substring(i, i + 5)); // <-- but here
greatest = numChar;
if (max < greatest) {
max = greatest;
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With