Write a program which: 1. Asks the user to enter a positive integer greater than
ID: 3804386 • Letter: W
Question
Write a program which:
1. Asks the user to enter a positive integer greater than 0 2. Validates that the entry is a positive integer 3. Outputs the digits in reverse order with a space separating the digits 4. Outputs the even digits not in reverse order with a space separating the digits (consider zero to be even) 5. Outputs the odd digits not in reverse order with a space separating the digits 6. Allows user is to repeat/continue the program as many times as he/she wants 7. Keeps a record in a txt file named outDataFile.txt with the history of all numbers entered and the associated results, in the following format: Please write the assignment in the programming language Java: please follow the folowing directions:In addition:
8. The program must have the following four void methods: a. validate //validate user input b. reverse // output reverse digits to screen and txt file c. even //output even digits to screen and txt file d. odd //output odd digits to screen and txt file , including follow these steps:
1. No infinite loops, examples include: a. for(;;) b. while(1) c. while(true) d. do{//code}while(1); 2. No break statements to exit loops
Explanation / Answer
UPDATED : There are no INFINITE loops in the program. All the loops in the program are finite. Do not get confused.
----------------------------------------------------------------------------------------------------------------------
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
public class Program {
public static String fileName = "outDataFile.txt";
public static void main(String args[]) {
new Program();
}
public Program() {
Scanner scanner = new Scanner(System.in);
start(scanner);
scanner.close();
}
public void start(Scanner scanner) {
System.out.print("Enter a positive integer : ");
int inputNumber = Integer.valueOf(scanner.next());
if (!validate(inputNumber)) {
System.out.println("input number is not a positive integer");
start(scanner);
return;
}
writeToFile("Input Number : "+ inputNumber);
reverse(inputNumber);
evenRev(inputNumber);
oddRev(inputNumber);
System.out.print(" Do you want to continue ? (Y/N) : ");
String choice = scanner.next();
if (!choice.equalsIgnoreCase("Y")) {
return;
}
start(scanner);
}
public boolean validate(int inputNum) {
if (inputNum > 0) {
return true;
}
return false;
}
public void reverse(int inputNum) {
int temp = inputNum;
String outputString = new String();
while (temp != 0) {
int digit = temp % 10;
temp = temp/10;
outputString = outputString + " " + digit;
}
outputString = "Reversed Number = " + outputString;
System.out.println(outputString);
writeToFile(outputString);
}
public void evenRev(int inputNum) {
int temp = inputNum;
String outputString = new String();
int pos = -1;
while (temp != 0) {
pos++;
temp /=10;
}
int revNum = getReverse(inputNum);
temp = inputNum;
while (temp != 0) {
int digit = temp % 10;
temp = temp/10;
int revNumDigit = revNum%10;
revNum = revNum/10;
if (pos%2 == 0) {
outputString = outputString + " " + digit;
}
else {
outputString = outputString + " " + revNumDigit;
}
pos--;
}
outputString = "Even-Digit Reversed Number = " + outputString;
System.out.println(outputString);
writeToFile(outputString);
}
public void oddRev(int inputNum) {
int temp = inputNum;
String outputString = new String();
int pos = -1;
while (temp != 0) {
pos++;
temp /=10;
}
int revNum = getReverse(inputNum);
temp = inputNum;
while (temp != 0) {
int digit = temp % 10;
temp = temp/10;
int revNumDigit = revNum%10;
revNum = revNum/10;
if (pos%2 != 0) {
outputString = outputString + " " + digit;
}
else {
outputString = outputString + " " + revNumDigit;
}
pos--;
}
outputString = "Odd-Digit Reversed Number = " + outputString;
System.out.println(outputString);
writeToFile(outputString);
}
private void writeToFile(String out) {
try {
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(new File(fileName)));
bufferedWriter.append(out + " ");
bufferedWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
private int getReverse(int temp) {
int revNum = 0;
while (temp!=0) {
int digit = temp % 10;
revNum = (revNum * 10 + digit);
temp /= 10;
}
return revNum;
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.