Please modify this program so it performs a partial input validation. If either
ID: 3630045 • Letter: P
Question
Please modify this program so it performs a partial input validation. If either fraction does not contain exactly one slash, have the program prompt the user to re-enter the fraction. The program will repeat the prompt as often as necessary until the user enters a string containing one slash. Please include single line comment with explanation next to where you made the changes.
Given Source code:
import java.util.*;
import java.lang.*;
public class FractionMath {
public static void main(String[] args)
{Scanner in=new Scanner(System.in);
int num1,num2,den1,den2,num3=0,den3=0,n=0,m;
String input,num;
System.out.print("Enter the first fraction:");
input=in.next();
n=input.indexOf('/');
num=(input.substring(0,n)).trim();
num1=Integer.parseInt(num);
m=input.length();
num=(input.substring(n+1,m)).trim();
den1=Integer.parseInt(num);
System.out.print("Enter the second fraction:");
input=in.next();
n=input.indexOf('/');
num=(input.substring(0,n)).trim();
num2=Integer.parseInt(num);
m=input.length();
num=(input.substring(n+1,m)).trim();
den2=Integer.parseInt(num);
num3=num1*den2+num2*den1;
den3=den1*den2;
print(num3,den3,"Sum");
num3=num1*den2-num2*den1;
den3=den1*den2;
print(num3,den3,"Difference");
num3=num1*num2;
den3=den1*den2;
print(num3,den3,"Product");
num3=num1*den2;
den3=den1*num2;
print(num3,den3,"Quotient");
}
public static int reduce(int num1,int num2) {
num1=Math.abs(num1);
num2=Math.abs(num2);
while (num1 != num2) {
if (num1 > num2)
num1 -= num2;
else
num2 -= num1;
}
return num1;
}
public static void print(int num3,int den3, String mess) {
int factor,n;
System.out.print(mess+": ");
factor=reduce(num3,den3);
num3/=factor;
den3/=factor;
if(num3<0&&den3<0)
{num3=num3*-1;
den3=den3*-1;
}
System.out.println(num3+"/"+den3);
}
}
Explanation / Answer
please rate - thanks
import java.util.*;
import java.lang.*;
public class FractionMath {
public static void main(String[] args)
{Scanner in=new Scanner(System.in);
int num1,num2,den1,den2,num3=0,den3=0,n=0,m;
String input,num;
do //loop is to keep doing it
{
System.out.print("Enter the first fraction:");
input=in.next();
n=input.indexOf('/');
m=input.lastIndexOf('/'); //first and last index of will be the
if(n!=m||n==-1) //same if only 1 /. n will be -1 if no
System.out.println("First input wrong, please enter the input again in fraction format");
}while(n!=m||n==-1);
num=(input.substring(0,n)).trim();
num1=Integer.parseInt(num);
m=input.length();
num=(input.substring(n+1,m)).trim();
den1=Integer.parseInt(num);
do //loop is to keep doing it
{
System.out.print("Enter the second fraction:");
input=in.next();
n=input.indexOf('/');
m=input.lastIndexOf('/'); //first and last index of will be the
if(n!=m||n==-1) //same if only 1 /. n will be -1 if no
System.out.println("First input wrong, please enter the input again in fraction format");
}while(n!=m||n==-1);
num=(input.substring(0,n)).trim();
num2=Integer.parseInt(num);
m=input.length();
num=(input.substring(n+1,m)).trim();
den2=Integer.parseInt(num);
num3=num1*den2+num2*den1;
den3=den1*den2;
print(num3,den3,"Sum");
num3=num1*den2-num2*den1;
den3=den1*den2;
print(num3,den3,"Difference");
num3=num1*num2;
den3=den1*den2;
print(num3,den3,"Product");
num3=num1*den2;
den3=den1*num2;
print(num3,den3,"Quotient");
}
public static int reduce(int num1,int num2) {
num1=Math.abs(num1);
num2=Math.abs(num2);
while (num1 != num2) {
if (num1 > num2)
num1 -= num2;
else
num2 -= num1;
}
return num1;
}
public static void print(int num3,int den3, String mess) {
int factor,n;
System.out.print(mess+": ");
factor=reduce(num3,den3);
num3/=factor;
den3/=factor;
if(num3<0&&den3<0)
{num3=num3*-1;
den3=den3*-1;
}
System.out.println(num3+"/"+den3);
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.