Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在一行中显示对多个分数的操作_Java_Fractions - Fatal编程技术网

Java 在一行中显示对多个分数的操作

Java 在一行中显示对多个分数的操作,java,fractions,Java,Fractions,下面的代码按预期工作,但是我无法在一行上显示输出。所有数字都是使用random()函数打印的随机数。 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

下面的代码按预期工作,但是我无法在一行上显示输出。所有数字都是使用
random()函数打印的随机数。

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);

    }
  }
}
现在,它是这样打印的:

输出应如下所示:

代码:

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);

    }
  }
}
导入java.util.array;
导入java.util.Random;
导入java.util.Scanner;
公共类FractionJava2{
公共静态void main(字符串[]args){
/*存储分子变量的数组*/
int[]num=新的int[4];
/*存储分母变量的数组*/
int[]denom=新的int[4];
/*用于保存运算符符号的变量*/
char ch;
/*随机函数来获取随机数*/
随机=新随机();
/*扫描仪功能,用于获取用户输入*/
扫描仪扫描=新扫描仪(System.in);
int num_sum[]=新int[num.length];
int denom_sum[]=新的int[denom.length];
for(int i=0,j=0;i
我无法找出阻止打印所需输出的原因。
请帮忙


您需要多个循环,每个输出行一个循环:

            // 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);
//第一行
for(int i=0;i
我可能把空格和制表符弄错了,但你明白了


顺便说一句,您的输出不正确。这不是添加分数的方式。

您使用的是
println
,每次调用它时都会添加换行符;尝试使用
print
@DaveBennett-您想指出代码的哪一部分?
感谢您的快速响应。
我理解添加分数需要找到分母的LCM并继续。然而,正如你所指出的,我的目标不是分数的实际相加。虽然数字可能是分数的形式,但加法仍然像是我们在添加一个数字,忽略了它的分数部分。
BTW,你的代码工作得很神奇!!如果假设我以正常的方式添加分数,那么代码中需要做哪些更改。
一个简单的提示应该可以满足需要。@mindfank,这将需要对代码进行大量更改。也就是说,当你的程序不打算这样做时,为什么你要以正常的方式添加分数呢?@ChetanKinger-
#只是问一下
“自助是最好的帮助”这句俗话,我会努力寻找答案。如果我真的被困在任何地方,我都需要跳到这里来寻求专家的帮助。@mindfreak是的,但你需要下决心。当Eran指出那不是分数相加的方式时,你说你的目标不是分数的实际相加。现在你想要的正好相反。发布一个新问题,因为答案不能包含在评论中。
            // 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);