
正文
java分数化简的代码 java分数化简的代码有哪些
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
(java) 对一个分数进行约分(分子分母同时除以最大公约数)。
;
实现辗转相除法()的代码可以很简洁(如下)。
应当一提的是,下面的 最大公约数( ) 函数的实现若改成以下这一句会更简洁更高效:
return b == 0 ? a : 最大公约数( b, a % b );
还有,java 标准库里的 BigInteger 类有提供求最大公约数的方法。
import java.math.*;
class C {
static int 最大公约数( int a, int b ) {
return a % b == 0 ? b : 最大公约数( b, a % b );
}
public static void main( String[ ] args ) {
int 分子 = 123456,
分母 = 7890;
System.out.println( "分数:" + 分子 + "/" + 分母 );
System.out.print( "约分后的结果是 " );
int gcd = 最大公约数( 分子, 分母 );
System.out.println( 分子 / gcd + "/" + 分母 / gcd );
////////////////////////////////////////////////////////////////////////
System.out.print( "利用 BigInteger 的 gcd( ) 求出的结果也是 " );
BigInteger fz = BigInteger.valueOf( 分子 ),
fm = BigInteger.valueOf( 分母 ),
BIgcd = fz.gcd( fm );
System.out.println( fz.divide( BIgcd ) + "/" + fm.divide( BIgcd ) );
}
}
相关问答
Q1: 急求两个Java程序!
强烈要求追加分,我花了一个多小时给你写的
累死我了!
1,分数类
public class Fraction {
private int numerator; //分子
private int denominator; //分母
public Fraction() {
numerator = 0;
denominator = 1;
}
public Fraction(int newNumerator, int newDenominator) {
if (newDenominator == 0) { //分母不能为零
System.out.println("分母为零!");
System.exit(0);
}
numerator = newNumerator;
denominator = newDenominator;
}
public void setNumerator(int newNumerator) {
numerator = newNumerator;
}
public void setDenominator(int newDenominator) {
denominator = newDenominator;
}
public void setBoth(int newNumerator, int newDenominator) {
numerator = newNumerator;
denominator = newDenominator;
}
public int getNumerator() {
return numerator;
}
public int getDenominator() {
return denominator;
}
public Fraction plus(Fraction f) { //加法(返回分数和)
int newNumerator = getNumerator() * f.getDenominator() +
f.getNumerator() * getDenominator();
int newDenominator = getDenominator() * f.getDenominator();
Fraction plus = new Fraction(newNumerator, newDenominator);
plus.reduce();
return plus;
}
public Fraction minus(Fraction f) { //减法(返回分数差)
int newNumerator = getNumerator() * f.getDenominator() -
f.getNumerator() * getDenominator();
int newDenominator = getDenominator() * f.getDenominator();
Fraction minus = new Fraction(newNumerator, newDenominator);
minus.reduce();
return minus;
}
public Fraction multiply(Fraction f) { //乘法(返回分数积)
int newNumerator = getNumerator() * f.getNumerator();
int newDenominator = getDenominator() * f.getDenominator();
Fraction minus = new Fraction(newNumerator, newDenominator);
minus.reduce();
return minus;
}
public Fraction divide(Fraction f) { //除法(返回分数商)
int newNumerator = getNumerator() * f.getDenominator();
int newDenominator = getDenominator() * f.getNumerator();
Fraction minus = new Fraction(newNumerator, newDenominator);
minus.reduce();
return minus;
}
public void output() { //输出分数
System.out.print(getNumerator() + "/" + getDenominator());
}
private void reduce() { //化简分数(分子分母同时除以最大公约数)
int max = maxCommonDivisor(getNumerator(), getDenominator());
numerator = getNumerator() / max;
denominator = getDenominator() / max;
}
private int maxCommonDivisor(int m, int n) { //返回m,n的最大公约数
int max = 1; //初始化最大公约数
int min = Math.min(Math.abs(m), Math.abs(n)); //m,n中绝对值较小的
for (int i = 1; i = min; i++) {
if ((m % i == 0) (n % i == 0)) { //m,n的公约数
max = i;
}
}
return max;
}
}
分数类测试
public class FractionDemo {
public static void main(String[] args) {
Fraction demo1 = new Fraction(1, 4);
Fraction demo2 = new Fraction(4, 6);
demo1.output();
System.out.print(" + ");
demo2.output();
System.out.print(" = ");
demo1.plus(demo2).output();
System.out.println();
demo1.output();
System.out.print(" - ");
demo2.output();
System.out.print(" = ");
demo1.minus(demo2).output();
System.out.println();
demo1.output();
System.out.print(" * ");
demo2.output();
System.out.print(" = ");
demo1.multiply(demo2).output();
System.out.println();
demo1.output();
System.out.print(" / ");
demo2.output();
System.out.print(" = ");
demo1.divide(demo2).output();
System.out.println();
}
}
2,长方形类
//矩形类,求矩形的周长和面积
public class Rectangle {
private double length; //长
private double width; //宽
public Rectangle() {
length = 0;
width = 0;
}
public Rectangle(double newLength, double newWidth) {
length = newLength;
width = newWidth;
}
public void setLength(double newLength) {
length = newLength;
}
public void setWidth(double newWidth) {
length = newWidth;
}
public void setBoeder(double newLength, double newWidth) {
length = newLength;
width = newWidth;
}
public double getLength() {
return this.length;
}
public double getWidth() {
return this.width;
}
public double getPerimeter() { //求周长
return (length + width) * 2;
}
public double getArea() { //求面积
return length * width;
}
}
长方形类演示
public class RectangleDemo {
public static void main(String[] args) {
Rectangle demo = new Rectangle(5, 4); //创建对象,长为5,宽为4
System.out.println("矩形的周长是:" + demo.getPerimeter());
System.out.println("矩形的面积是:" + demo.getArea());
}
}
Q2: 如何用java编写一个,手动输入10个分数,去掉一个最高分,去掉一个最低分,并把剩余的数求平均值的的
输出结果图:
参考代码如下:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class xxx {
public static void main(String[] args) {
System.out.println("请输入10个数字,以逗号隔开:");
Scanner scanner=new Scanner(System.in);
String input=scanner.next();
//将输入的数字按照","分割成数组
String[] numStrs=input.split(",");
ListInteger nums=new ArrayListInteger();
//将数组的数字放入集合list中方便排序和取出最大最小数
for (int i = 0; i numStrs.length; i++) {
nums.add(Integer.parseInt(numStrs[i]));
}
Collections.sort(nums);
System.out.println("从小往大排序后:"+nums);
nums.remove(0);
nums.remove(nums.size()-1);
System.out.println("去掉最小数和最大数后:"+nums);
double avg=0d;
int sum=0;
//求出剩下数字的总和
for (int i = 0; i nums.size(); i++) {
sum+=nums.get(i);
}
//求平均值(总和/剩下数字的个数)
avg=sum/(nums.size());
System.out.println("["+nums+"]的平均数为:"+avg);
}
}
Q3: java 编写Fraction类。小弟刚学,求具体程序。谢啦!钱不多,求大神帮忙!
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
class Test extends JFrame {
JCheckBox checkbox;// 复选框
JComboBox combobox;// 下拉菜单
public Test() {
setSize(500, 500);
this.setLocation(300, 300);
setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
checkbox = new JCheckBox("控制地区显示", true);
Container c = this.getContentPane();
c.setLayout(null);
c.add(checkbox);
checkbox.setLocation(100, 0);
checkbox.setSize(120, 20);
checkbox.addActionListener(new monitor());
combobox = new JComboBox();
c.add(combobox);
combobox.addItem("北京");
combobox.addItem("上海");
combobox.addItem("深圳");
combobox.addItem("平顶山");
combobox.setLocation(300, 0);
combobox.setSize(100, 20);
}
class monitor implements ActionListener {
public void actionPerformed(ActionEvent e) {
combobox.setEnabled(checkbox.isSelected());
}
}
public static void main(String args[]) {
Test e = new Test();
}
}
Q4: 怎么用java编程,实现分数的加减乘除运算?
java编程实现分数的加减乘除运算的步骤如下:
1、打开eclipse,创建一个Java工程,在此工程里新建一个类;
2、在新建的类中,添加4个运算类;
3、在主方法中调用对应的方法即可完成分数的加减乘除运算了。
具体实现代码如下:
public class Demo {
public static void main(String[] args) {
System.out.println(jia(1, 2));
System.out.println(jian(1, 2));
System.out.println(cheng(1, 2));
System.out.println(chu(1, 2));
}
//加法运算
private static float jia(float x,float y) {
return x + y;
}
//减法运算
private static float jian(float x,float y) {
return x - y;
}
//乘法运算
private static float cheng(float x,float y) {
return x * y;
}
//除法运算
private static float chu(float x,float y) {
return x / y;
}
}
关于java分数化简的代码和java分数化简的代码有哪些的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。





