Reversing digits of integers read from Text Files with and without using ArrayLists (or Arrays) - Free Response Practice Question (with solution)
| <-- Back to Sum of Digits of Integers | Next to AP CSA Exam Solutions --> |
Problem Statement
Write a Java program that reads positive integers from a file (named reverseDigits.txt) and does the following:
- Store all the numbers in an ArrayList. Then, reverse each number and store these reversed numbers in another ArrayList. Find the number with the maximum reversed number.
- Implement (a) without storing the original numbers or reversed numbers in any Array or ArrayList.
Sample Input: reverseDigits.txt
Sample Output (a): Store all the numbers in an ArrayList. Then, reverse each number and store these reversed numbers in another ArrayList. Find the number with the maximum reversed number.
View Output
Solution for (a):
View SolutionMaxReverseNumberRunner.java
All integers are loaded into numbersList, then a second loop calls the helper getReverseNumber() for each and stores the results in revList. A final pass through revList finds the index of the maximum reversed value and uses it to retrieve the corresponding original number.
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.InputMismatchException;
import java.util.Scanner;
public class MaxReverseNumberRunner {
public static int getReverseNumber(int n) {
n = Math.abs(n); // handle negative numbers
int rev = 0;
while (n > 0) {
rev = rev*10 + (n % 10);
n = n / 10;
}
return rev;
}
public static void main(String args[]) {
try {
File inputFile = new File("reverseDigits.txt");
Scanner input = new Scanner(inputFile);
ArrayList numbersList = new ArrayList();
ArrayList revList = new ArrayList();
int num = 0;
int revNumber = 0;
while (input.hasNext()) {
num = input.nextInt();
numbersList.add(Integer.valueOf(num));
}
input.close();
// loop through numbersList
for (int i = 0; i < numbersList.size(); i++) {
revNumber = getReverseNumber(numbersList.get(i));
revList.add(Integer.valueOf(revNumber));
}
// find max rev number & corresponding number
int maxRevNumber = revList.get(0);
int maxIndex = 0;
for (int i = 1; i < revList.size(); i++) {
if (revList.get(i) > maxRevNumber) {
maxRevNumber = revList.get(i);
maxIndex = i;
}
}
System.out.println("Number with maximum reverse number = " + numbersList.get(maxIndex));
System.out.println("The reversed number is: " + maxRevNumber);
} catch (FileNotFoundException e) {
System.out.println("Error: File not found.");
} catch (InputMismatchException e) {
System.out.println("Error: Incomptabile data in file.");
}
}
}
Sample Output (b): Implement (a) without storing the original numbers or reversed numbers in any Array or ArrayList.
View Output
Solution for (b):
View SolutionMaxReverseNumberWOStoring.java
Instead of using ArrayLists, getReverseNumber() is called immediately for each integer as it is read from the file. A running maxRevNumber and its corresponding maxNum are updated whenever a larger reversed value is encountered.
import java.io.File;
import java.io.FileNotFoundException;
import java.util.InputMismatchException;
import java.util.Scanner;
public class MaxReverseNumberWOStoring {
public static int getReverseNumber(int n) {
n = Math.abs(n); // handle negative numbers
int rev = 0;
while (n > 0) {
rev = rev * 10 + (n % 10);
n = n / 10;
}
return rev;
}
public static void main(String args[]) {
try {
File inputFile = new File("reverseDigits.txt");
Scanner input = new Scanner(inputFile);
int num = 0;
int revNumber = 0;
int maxRevNumber = Integer.MIN_VALUE;
int maxNum = 0;
while (input.hasNext()) {
num = input.nextInt();
revNumber = getReverseNumber(num);
if (revNumber > maxRevNumber) {
maxRevNumber = revNumber;
maxNum = num;
}
}
input.close();
System.out.println("Number with maximum reverse number = " + maxNum);
System.out.println("The reversed number is: " + maxRevNumber);
} catch (FileNotFoundException e) {
System.out.println("Error: File not found.");
} catch (InputMismatchException e) {
System.out.println("Error: Incomptabile data in file.");
}
}
}
Java project files (with input files):
| <-- Back to Sum of Digits of Integers | Next to AP CSA Exam Solutions --> |