java
Question
(1) Question:For this java coding challenge, you will ask the user for the name of an output file to save the
data.
You will expand the java program that asks for a start number and stop number, and tells you if the numbers in the inclusive range are prime, perfect, imperfect deficient, or imperfect abundant. You will next add a check for Perfect Squares. A perfect square is the square of an integer (e.g., 1,4,9,16, 25, etc.)
Note 1: For this project, the number 1 will be considered a prime number, but it is not a perfect number (since its only factor is just 1, which by definition is an improper factor, thus disqualifying it from being perfect)
Note 2: All Prime Numbers and Perfect Squares are also Imperfect Deficient. But a positive check for “Prime” or “Perfect Square” supersedes a check for “Imperfect Deficient”
Note 3: You do not need to add any error testing code on the numbers; the code will be tested with strictly positive integers. You must add error checking for the creation of the external file (per Java’s insistence)
Below is my Java code:
import java.io.*;
import java.util.Scanner;
public class CodingChallenge4CRM {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println(“Welcome to the Prime, Perfect Square, and Perfect Number Tester “);
System.out.println(“Please enter the name of the output file to save your data:”);
String name = sc.nextLine();
PrintWriter pw = null;
try {
FileOutputStream fout = new FileOutputStream(name);
pw = new PrintWriter(fout);
}
catch (Exception e){
e.printStackTrace();
}
System.out.print(“Enter a start number:”);
int a = Integer.parseInt(sc.nextLine());
System.out.print(“Enter a stop number:”);
int b = Integer.parseInt(sc.nextLine());
for (int i = a; i<b; i++){
int ps = 0;
for (int k = 0; k<a; k++){
if (k*k == i){
ps = 1;
System.out.println(“The number ” + i+ ” is: Perfect Square”);
pw.println(“The number ” + i+ ” is: Perfect Square”);
}
}
if (ps == 1)
continue;
int sum = 0;
for (int j = 2; j<i; j++){
if (i % j == 0)
sum = sum + j;
}
if (sum == 0){
System.out.println(“The number ” + i+ ” is: Prime”);
pw.println(“The number ” + i+ ” is: Prime”);
}
else if (sum == i){
System.out.println(“The number ” + i+ ” is: Perfect Number”);
pw.println(“The number ” + i+ ” is: Perfect Number”);
}
else if (sum > i){
System.out.println(“The number ” + i+ ” is: Imperfect Abundant”);
pw.println(“The number ” + i+ ” is: Imperfect Abundant”);
}
else{
System.out.println(“The number ” + i+ ” is: Imperfect Defficient”);
pw.println(“The number ” + i+ ” is: Imperfect Defficient”);
}
}
}
}
The output needs to look like the following:
Welcome to the Prime, Perfect Square, and Perfect Number Tester
Enter the name of the output file: MyNumData.txt
Enter a start number: 20
Enter a stop number : 30
The number 20 is: Imperfect Abundant
The number 21 is: Imperfect Deficient
The number 22 is: Imperfect Deficient
The number 23 is: Prime
The number 24 is: Imperfect Abundant
The number 25 is: Perfect Square
The number 26 is: Imperfect Deficient
The number 27 is: Imperfect Deficient
The number 28 is: Perfect
The number 29 is: Prime
The number 30 is: Imperfect Abundant
Results: my written java program stops one less–stops at 29 and it incorrectly reports 28 as imperfect deficient when in fact it is perfect. I can’t figure out where I went wrong in the code.
Any assistance will be greatly appreciated.