添加java程序时出错
我的Java类的最后一个程序有问题。我们只能使用到目前为止所学的概念,所以我不能使用其他课程。基本上只是循环、数组和方法 因此,对于这个程序,我们必须添加输入的任何五组分数,并以最低形式给出GCD和结果。我必须在第一个表中显示所有数据,然后在第二个表中显示原始数据、GCD和最低形式的结果。必须使用以下数据对其进行测试:添加java程序时出错,java,fractions,Java,Fractions,我的Java类的最后一个程序有问题。我们只能使用到目前为止所学的概念,所以我不能使用其他课程。基本上只是循环、数组和方法 因此,对于这个程序,我们必须添加输入的任何五组分数,并以最低形式给出GCD和结果。我必须在第一个表中显示所有数据,然后在第二个表中显示原始数据、GCD和最低形式的结果。必须使用以下数据对其进行测试: 1/4 + 1/2 2/3 + 1/3 7/8 + 1/8 2/9 + 4/27 7/25 + 2/5 这是我到目前为止的代码。(温柔一点,我还是新手) import java
1/4 + 1/2
2/3 + 1/3
7/8 + 1/8
2/9 + 4/27
7/25 + 2/5
这是我到目前为止的代码。(温柔一点,我还是新手)
import java.util.Scanner;
公共类HelloWorld{
公共静态void main(字符串[]args)引发异常{
int[]num1Array=newint[5];
int[]num2Array=newint[5];
int[]deno1Array=新int[5];
int[]deno2Array=新的int[5];
扫描仪输入=新扫描仪(System.in);
对于(int x=0;x试试这个,希望它能帮助你。:)
那么问题是什么?您没有向我们显示gcdfinal()
和fracAdd()
的代码,这就是您的问题所在(如果有)谎言。这两种方法都位于代码的底部,只是一个通用的指针:当循环变量没有特定的含义时,例如行或列或表,这是最好的方法(尽管当然没有必要)使用i
作为循环变量。在嵌套循环中,进程是i
、j
、k
,等等。我要说的是,这三个循环都可以使用for(int x…)
它们不必是不同的变量。我只是不确定如何在方法之后将添加的分子和分母传递到表中。此外,如果它添加到1,则只能显示1。
import java.util.Scanner;
public class HelloWorld{
public static void main(String[] args) throws Exception{
int[] num1Array = new int[5];
int[] num2Array = new int[5];
int[] deno1Array = new int[5];
int[] deno2Array = new int[5];
Scanner input = new Scanner(System.in);
for(int x=0;x<5;x++) { //Get all data from user
System.out.println("Enter data for problem " + (x+1));
System.out.println("Enter numberator for fraction 1");
num1Array[x] = input.nextInt();
System.out.println("Enter denominator for fraction 1");
deno1Array[x] = input.nextInt();
System.out.println("Enter numberator for fraction 2");
num2Array[x] = input.nextInt();
System.out.println("Enter denominator for fraction 2");
deno2Array[x] = input.nextInt();
System.out.println("********************");
}
System.out.println("*****ORIGINIAL DATA ******"); //Output all entered data
System.out.println("First Fraction \t Second Fraction");
for(int y=0;y<5;y++) {
System.out.printf("%1d/%1d \t\t %1d/%1d\n", num1Array[y], deno1Array[y], num2Array[y], deno2Array[y]);
}
System.out.println("*******FRACTIONS SHOWING ADDED RESULTS*********"); //Display results
System.out.println("First Fraction \t Second Fraction GCD Results");
for(int z=0;z<5;z++){
int finalgcd = gcdfinal(num1Array[z], num2Array[z], deno1Array[z], deno2Array[z]);
int addFrac = fracAdd(num1Array[z], num2Array[z], deno1Array[z], deno2Array[z]);
System.out.printf("%1d/%1d \t\t %1d/%1d\t\t %1d \t %1d", num1Array[z], deno1Array[z], num2Array[z], deno2Array[z], finalgcd, addFrac);
System.out.println();
}
}
public static int fracAdd(int num1, int num2, int deno1, int deno2)
{
int e = lcm(deno1, deno2); //denominator
int f1 = e / deno1;
int f2 = e / deno2;
int g1 = num1 * f1;
int g2 = num2 * f2;
int adding = g1 + g2;
int k = gcd(adding, e);
int final_num = adding / k;
int final_deno = e / k;
if(final_num == final_deno){
return 1;
}
else {
return (final_num, final_deno);
}
}
public static int gcd(int a, int b) //Calculate GCD
{
while (b > 0)
{
int temp = b;
b = a % b;
a = temp;
}
return a;
}
public static int gcdfinal(int num1, int num2, int deno1, int deno2)
{
int e = lcm(deno1, deno2); //Calculate the GCD for display
int f1 = e / deno1;
int f2 = e / deno2;
int g1 = num1 * f1;
int g2 = num2 * f2;
int end = g1 + g2;
int k = gcd(end, e);
return k;
}
public static int lcm(int a, int b) //Calculate LCM
{
return a * (b / gcd(a, b));
}
}
import java.util.Scanner;
public class AddingFraction {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
System.out.println("please enter a fraction number in a/b format: ");
String fraction1 = sc.nextLine();
System.out.println("please enter another fraction number in a/b format: ");
String fraction2 = sc.nextLine();
addFractions(fraction1, fraction2);
}
public static void addFractions(String fractionNum1, String fractionNum2) {
int numResult = 0;
String resultFraction;
String[] frcNum1 = fractionNum1.split("/");
int numerator1 = Integer.parseInt(frcNum1[0]);
int Denomenator1 = Integer.parseInt(frcNum1[1]);
String[] frcNum2 = fractionNum2.split("/");
int numerator2 = Integer.parseInt(frcNum2[0]);
int Denomenator2 = Integer.parseInt(frcNum2[1]);
if (Denomenator1 == Denomenator2) {
numResult = numerator1 + numerator2;
resultFraction = numResult + "/" + Denomenator1;
System.out.println("Resultant Fraction is : "+resultFraction);
} else {
int denLcm = Denomenator1 * (Denomenator2 / gcd(Denomenator1, Denomenator2));;
numResult = numerator1 * (denLcm / Denomenator1) + numerator2
* (denLcm / Denomenator2);
resultFraction = numResult + "/" + denLcm;
System.out.println("Resultant Fraction is : "+resultFraction);
}
}
private static int gcd(int a, int b) {
while (b > 0) {
int temp = b;
b = a % b; // % is remainder
a = temp;
}
return a;
}
}