Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.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_Html_Eclipse_Class_Lang - Fatal编程技术网

计算简单分数的Java程序

计算简单分数的Java程序,java,html,eclipse,class,lang,Java,Html,Eclipse,Class,Lang,该程序的目的是为一个分数获取两个用户输入,从用户接收一个运算符,然后为第二个分数获取两个以上的用户输入。程序必须检查两个分数中使用的数字范围是否在0-99之间,分母是否为非零。程序还必须确保用户输入有效的运算符(-,+,*,/) 更新:我现在面临的唯一问题是没有一个变量被初始化,我不知道如何使输出看起来像这样: 13 --- + --- = --- 8 4 8 这是迄今为止我所掌握的代码,我是编程初学者,非常感谢您的帮助: import java.util.Scanner; p

该程序的目的是为一个分数获取两个用户输入,从用户接收一个运算符,然后为第二个分数获取两个以上的用户输入。程序必须检查两个分数中使用的数字范围是否在0-99之间,分母是否为非零。程序还必须确保用户输入有效的运算符(-,+,*,/)

更新:我现在面临的唯一问题是没有一个变量被初始化,我不知道如何使输出看起来像这样:

13
--- + --- = ---
8     4     8
这是迄今为止我所掌握的代码,我是编程初学者,非常感谢您的帮助:

import java.util.Scanner;
public class FractionCalculator {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);

int n1;
int n2;
int d1;
int d2;
int n;
int d;
char o;
int m1,m2; 
int tempN1, tempN2;
int lcm, x;

System.out.println("Enter a numerator for fraction 1: ");
n1 = in.nextInt();
System.out.println("Enter a denominator for fraction 1: ");
d1 = in.nextInt();

if  (d1 > 0) {
  System.out.println(); 
} else {
  System.out.println("Invalid denominator");
  System.exit(0); 
}

System.out.println("Enter an operator: ");
o = in.next().toCharArray()[0]; 
System.out.println("Enter a numerator for fraction 2: ");
n2 = in.nextInt();
System.out.println("Enter a denominator for fraction 2: ");
d2 = in.nextInt();

if (d2 > 0) {
  System.out.println(); 
} else {
  System.out.println("Invalid denominator");
  System.exit(0); 
}


switch(o){
    case '*':
        n = n1 * n2;
        d = d1 * d2;
        break;

    case '/':
        n = n1 * d2;
        d = n2 * d1;
        break;

    case '+':
        int max=n1>d1?n1:d1;
        int min=n1<d1?n1:d1; 
        for(int i=1;i<=min;i++)
            x=max*i;
            if (x%min==0)
            lcm=x;      
        tempN1=n1*m1;
        tempN2=n2*m2;
        m1=lcm/d1;
        m2=lcm/d2;
        n = tempN1 + tempN2;
        d = lcm;
        break; 

    case '-':
        n = tempN1 - tempN2;
        d = lcm;
        break;
    default:
        System.out.println("Illegal Operator: "+ o);
        break; }
 }
}
import java.util.Scanner;
公共类分形计算器{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(系统输入);
int-n1;
int n2;
int d1;
int d2;
int n;
int d;
查尔o;
int m1,m2;
int tempN1,tempN2;
int-lcm,x;
System.out.println(“为分数1输入一个分子:”);
n1=in.nextInt();
System.out.println(“输入分数1的分母:”);
d1=in.nextInt();
如果(d1>0){
System.out.println();
}否则{
System.out.println(“无效分母”);
系统出口(0);
}
System.out.println(“输入运算符:”);
o=in.next().toCharArray()[0];
System.out.println(“输入分数2的分子:”);
n2=in.nextInt();
System.out.println(“输入分数2的分母:”);
d2=in.nextInt();
如果(d2>0){
System.out.println();
}否则{
System.out.println(“无效分母”);
系统出口(0);
}
开关(o){
案例“*”:
n=n1*n2;
d=d1*d2;
打破
案例“/”:
n=n1*d2;
d=n2*d1;
打破
格“+”:
int max=n1>d1?n1:d1;
int min=n1这是逻辑

Let the numbers be
  n1, n2, d1, d2, n, d;
对于加减法,求分母的L.C.M,然后简单地加上或减去分子

Here, d=LCM(d1,d2)
Make changes to the numerator while computing LCM
n=n1+n2; or n=n1-n2;
对于乘法

n=n1*n2;
d=d1*d2;
对于除名

n=n1*d2;
d=n2*d1;
用于查找LCM的代码

int max=a>b?a:b;
int min=a<b?a:b;
int lcm, x; 
for(int i=1;i<=min;i++)
{
    x=max*i; //finding multiples of the maximum number

    if(x%min==0) //Finding the multiple of maximum number which is divisible by the minimum number.
    {
        lcm=x; //making the 1st multiple of maximum number as lcm, which is divisible by the minimum number
        break; //exiting from the loop, as we don’t need anymore checking after getting the LCM
    }
 }
加减

n=tempN1+tempN2;  //n=tempN1-tempN2; in case of subtraction
d=lcm;

Java是一种面向对象的语言。如果没有
Rational
Fraction
类,没有抽象加法、减法、乘法、除法等运算的方法,就不应该尝试这个问题


蒂莫西·巴德(Timothy Budd)的《C++中的数据结构》中有一个很好的例子,说明了如何正确地使用它。它使用欧几里德的GCD自动将3/12转换为1/4,等等。

欢迎使用Java/SO/编程作为一个整体!您选择了一个有趣的问题来学习

让我们看看如何检查/处理运算符。值得注意的是,所有有效运算符(+、-、*、/)都是一个字符。因此,与其让
o
成为字符串,不如让它成为
char
(因为假设用户为他们的操作符输入多个字符,这是错误的——让我们只取他们输入的第一个字符)

一旦我们有了所有的输入,我们就可以使用操作符上的
switch
语句来确定它是否有效以及实际执行的操作

public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    int a, b, c, d, e, f;
    char o;
    System.out.println("Enter a numerator for fraction 1: ");
    a = in.nextInt();
    System.out.println("Enter a denominator for fraction 1: ");
    b = in.nextInt();

    if  (b > 0) {
      System.out.println(); 
    } else {
      System.out.println("Invalid denominator");
      System.exit(0); 
    }

    System.out.println("Enter an operator: ");
    o = in.next().toCharArray()[0]; //Take the first character of the string entered by user
    System.out.println("Enter a numerator for fraction 2: ");
    c = in.nextInt();
    System.out.println("Enter a denominator for fraction 2: ");
    d = in.nextInt();

    if (d > 0) {
      System.out.println(); 
    } else {
      System.out.println("Invalid denominator");
      System.exit(0); 
    }

    switch(o){
        case '*':
            //Do multiplication..
            break;
        case '/':
            //Do Division..
            break;
        case '+':
            //Do addition..
            break;
        case '-':
            //Do subtraction..
            break;
        default:
            System.out.println("Illegal Operator: "+ o);
            break;
     }
  }

我会说使用switch/case语句来确保有效的运算符输入。我应该使用if语句,因为我同意,我想使用switch语句不是很整洁,但是可以……if,else if,else可以很好地将符号匹配到数学方法()或者,如果输入无效,则会出现错误。你会获得一些反对票,这可能是因为你要求这样做是为了做一些你可以轻松研究的一般问题的家庭作业。如果你全力以赴解决它,然后列出你遇到的错误,你会有更好的运气。我对计算机编程的知识非常丰富mely minimal和我到目前为止对代码的了解花了我整整3个小时,我付出了努力并做了尝试,但由于我的知识如此之少,如果你不知道如何使用从研究中得到的组件,即使是研究也很困难。太好了,也许你可以为它编写程序。如果是这样的话,发布它。因为这是关于编程的。那这是一个简单而有效的数学,现在使用Sunil的术语进行加法/减法:加法,d=d1*d2n=(n1*d2)+(n2*d1)减法d=d1*d2n=(n1*d2)-(n2*d1)我添加了一个相同的示例代码。我希望它能有所帮助。
public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    int a, b, c, d, e, f;
    char o;
    System.out.println("Enter a numerator for fraction 1: ");
    a = in.nextInt();
    System.out.println("Enter a denominator for fraction 1: ");
    b = in.nextInt();

    if  (b > 0) {
      System.out.println(); 
    } else {
      System.out.println("Invalid denominator");
      System.exit(0); 
    }

    System.out.println("Enter an operator: ");
    o = in.next().toCharArray()[0]; //Take the first character of the string entered by user
    System.out.println("Enter a numerator for fraction 2: ");
    c = in.nextInt();
    System.out.println("Enter a denominator for fraction 2: ");
    d = in.nextInt();

    if (d > 0) {
      System.out.println(); 
    } else {
      System.out.println("Invalid denominator");
      System.exit(0); 
    }

    switch(o){
        case '*':
            //Do multiplication..
            break;
        case '/':
            //Do Division..
            break;
        case '+':
            //Do addition..
            break;
        case '-':
            //Do subtraction..
            break;
        default:
            System.out.println("Illegal Operator: "+ o);
            break;
     }
  }