Hello everyone,
Thanks for trying to help me.
The program that I am working on is supposed to ask a person for their input in feet and inches
2' 2 2/2" <--- (This format)
However, I cannot come up with a way that enables such kind of user input.
The program is composed of three classes
Fraction
Pair
Mix
<!-- Java: ... -->
import java.util.Scanner; class Mix extends Fraction{ public Mix ( int n, int m) { super (n,m); } public String displayMix() { String str=""; if (first < second) str=first+ "'" + first%second +"/"+second+"\""; else str=first+"'" +(first+second)+"/"+second+"\""; return str; } //display public static String get () { Scanner scan = new Scanner(System.in); System.out.print("Please enter a mixed-format number:"); String userInput = scan.nextLine(); userInput = userInput.trim(); System.out.println("Input is: "+ userInput); return (userInput); } //get public static void main(String [] args) { String userInput; int[]iA = {0,0,0,1}; userInput = Mix.get(); iA=parse(userInput); Mix f = new Mix ( iA[0] , (iA[1]*iA[2])+(iA[3]) ); System.out.println("Number = " + f.displayMix()); userInput = Mix.get(); iA=parse(userInput); Mix g = new Mix ( iA[0] , iA[1] * iA[3] + iA[2]); System.out.println("Number = " + g.displayMix()); Mix h = Mix.add (f,g); System.out.println("Sum ="+ h.displayMix()); } // main public static Mix add (Mix f, Mix g){ int gtop= f.first+g.first; int gbottom= f.second+g.second; return(new Mix ( gtop, gbottom)); } //add public static int[] parse (String userInput){ int [] sA = {0,0,0,1}; int pos = userInput.indexOf("'"); String sNum0 = userInput.substring(0,pos); pos = userInput.indexOf("'"); sA[0]= Integer.parseInt(sNum0); String sNum = userInput.substring(0,pos); pos = sNum.indexOf(" "); sA[1]= Integer.parseInt(sNum); String sNum2 = userInput.substring(pos + 1); pos = sNum2.indexOf("/"); String sTop= sNum2.substring (pos +3); pos = sNum2.indexOf("\""); sA[2] = Integer.parseInt(sTop); String sBot = sNum2.substring(pos +1); sA[3] = Integer.parseInt(sBot); // 2' 2 2/2 return (sA); }} //parse
I have managed to get result after inputting
2' 2 2/2"1
I don't know what I am doing wrong, but something is off since i need a number after the " to get a result back.
I am pretty sure that something is wrong with the parsing method, i just dont know where it is.
If you test the program you will see that the results for the numbers are not correct, I am aware of this issue, but I want to nail down the input
so that later on i can deal with the computational issues with more ease.
This is the Fraction class
public class Fraction extends Pair{ //attributes: NONE public Fraction(int n, int m) { super(n,m); int g=gcd(n,m); first = first; second=second/g; }//Fraction public void display2() { System.out.print(first); System.out.print("/"); System.out.println(second); }//display public Fraction add (Fraction f1, Fraction f2){ int gtop=f1.first * f2.second + f2.first * f1.second; int gbottom= f1.second * f2.second; return (new Fraction(gtop,gbottom)); } public static int gcd (int n, int m){ while ( n!=m) { if (n>m) n=n-m; else m=m-n; }//while return (n); } //gcd } //class
This is the third class
public class Pair { int first; int second; public Pair(int n, int m) { first=n; second=m; }//Pair public void display() { //pseudo_code is here System.out.print("First integer="+first); System.out.println(); System.out.println("Second integer="+second); }//display public static void main(String[] args) { //pseudo-code is here Pair f= new Pair(2,4); f.display(); }//main } //class