Search code examples
javafractions

Display operations on multiple fractions in a single line


The following code is working as expected, however I'm unable to display the output on a single line. All numbers are random numbers printed using Random() function.

As of now, it's printing like this:

38 
--- + 
45 
90 
--- + 
16 
29 
--- + 
21 
54 
--- + 
99 


=   211 
    --- 
    181

The output should be displayed like this:

38      90       29     54     211
--- +  ----  +  ---- + ---- = ----- 
45      16       21     99     181

Code:

import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;

public class FractionJava2 {

    public static void main(String[] args) {

        /* Array to store Numerator variables */
        int[] num =  new int[4];

        /* Array to store Denominator variables */
        int [] denom = new int[4];

        /* Variable to hold the operator sign */
        char ch ;

        /* Random function to get the random numbers */
        Random random = new Random();

        /* Scanner function to take the user input */
        Scanner scan = new Scanner(System.in);

        int num_sum[] = new int[num.length];
        int denom_sum[] = new int[denom.length]; 


        for (int i = 0, j=0; i < denom.length; i++, j++) {

            num[i] = random.nextInt(100)+1;
            denom[j]=random.nextInt(100)+1;

            System.out.println("Numerators are: " +num[i]);
            System.out.println("Denominators are: "+denom[i]); 
        }


            System.out.println("Enter the operation you wish to perform");
            ch = scan.next().toCharArray()[0];

            System.out.println("\nThe resultant fraction is: ");

        /* Variable to hold the sum of numerator values */
        int numeratorSum = 0;

        /* Variable to hold the sum of denominator values */
        int denominatorSum = 0;


        switch(ch){

        case '+' : 


                for (int i = 0; i < denom_sum.length; i++) {

                    num_sum[i] = num_sum[i] + num[i];
                    denom_sum[i] = denom_sum[i]+ denom[i];

                    System.out.printf("%d \n", num_sum[i]);
                    System.out.printf("--- %c \n", ch);
                    System.out.printf("%d \n", denom_sum[i]);

                    numeratorSum = numeratorSum + num_sum[i];
                    denominatorSum = denominatorSum + denom_sum[i];
            }
                System.out.println("\n");
                System.out.printf("=\t");
                System.out.printf("%d \n", numeratorSum);
                System.out.printf("\t--- \n", ch);
                System.out.printf("\t%d ", denominatorSum);

    }
  }
}

I'm unable to trace out, as to what is preventing from printing the desired output.
Please help !!!


Solution

  • You'll need multiple loops, one for each output line :

                // first line
                for (int i = 0; i < denom_sum.length; i++) {
                    num_sum[i] = num_sum[i] + num[i];
                    System.out.printf("%d   ", num_sum[i]);
                    numeratorSum = numeratorSum + num_sum[i];
                }
                System.out.printf("     %d \n", numeratorSum);
                // second line
                for (int i = 0; i < denom_sum.length; i++) {
                    System.out.printf("--- %c", ch);
                }
                System.out.printf("=\t   --- \n", ch);
                // third line
                for (int i = 0; i < denom_sum.length; i++) {
                    denom_sum[i] = denom_sum[i]+ denom[i];                    
                    System.out.printf("%d    ", denom_sum[i]);
                    denominatorSum = denominatorSum + denom_sum[i];
                }
                System.out.printf("\t%d \n", denominatorSum);
    

    I probably got the spaces and TABs wrong, but you get the idea.

    BTW, your output is incorrect. That's not how you add fractions.