导航:首页 > 编程语言 > java分数

java分数

发布时间:2023-05-03 23:18:33

java怎么计算分数

1设计一个计算成绩的程序。其运行截图如下所示。
请输入你要计算的科目数:2
请输入第一门成绩:91
请输入第二门成绩:89
您的各科成绩如下:
1:91
2:89
您的总分为:180;
平均分为:90
即:首先让用户输入需要计算几门成绩,然后根据用户输入的门数让用户一门一门地输入成绩,输入完了之后,将用户输入的各科成绩展示出来,然后输出计算好的的总分和平均分。
要求:用数组来完成本题。

❷ java的分数运算问题

import java.util.Scanner;

public class Du{
public static void main(String args[]) throws Exception{

System.out.println("Please input a string in format xx/xx");

Scanner scanner = new Scanner(System.in);
String input = scanner.next();

String[] ary = input.split("/");

int numerator = Integer.parseInt(ary[0].trim());
int denominator = Integer.parseInt(ary[1].trim());

Fraction fra = new Fraction(numerator, denominator);
Fraction fra2 = new Fraction(15, 7);
Fraction fra3 = new Fraction(13, 12);

fra2.multiple(fra);//测试乘法
System.out.println("15/7 * 1/3 = " + fra2.toString());

fra.add(fra3);//测试加法
System.out.println("1/3 + 13/12 = " + fra.toString());
}
}

class Fraction{

private int numerator;//分子
private int denominator;//分母

public Fraction(int numerator, int denominator) throws Exception{
if(denominator == 0){//分母为0,出错
throw new Exception("Denominator can't be ZERO!");
}

this.numerator = numerator;
this.denominator = denominator;
}

public void multiple(Fraction fract2){//分数相乘
numerator *= fract2.numerator;//分子相乘
denominator *= fract2.denominator;//分母相乘

//结果约分
int lcd = getLCD(numerator, denominator);//最大公约数
numerator = numerator / lcd;
denominator = denominator /lcd;
}

public void add(Fraction fract2){
int gcm = getGCM(denominator, fract2.denominator);//最小公倍数作为分母

numerator *= gcm / denominator;//分子通分
fract2.numerator *= gcm / fract2.denominator;//第二个分子通分

numerator += fract2.numerator;//分子相加
denominator = gcm;//分母为最小公倍数

//约分
int lcd = getLCD(numerator, denominator);

if(lcd != 1){
numerator = numerator / lcd;
denominator = denominator / lcd;
}
}

public String toString(){
return numerator + "/" + denominator;
}

//求最大公约数
public static int getLCD(int num1, int num2){
int max = Math.max(num1, num2);
int min = Math.min(num1, num2);

while(max % min != 0){
int temp = max;
max = min;
min = temp % min;
}

return min;
}

//求最小公倍数
public static int getGCM(int num1, int num2){
return num1 * num2 /getLCD(num1, num2);
}

}
-----------------
Please input a string in format xx/xx
1/3
15/7 * 1/3 = 5/7
1/3 + 13/12 = 17/12

所有分数都可以通过乘10得倍数而达到分子和分母都是int类型的,所以没有问题的。

❸ 用java做题根据输入的分数,输出该成绩的等级(如优秀、良好、中、几个或不及格

import java.util.Scanner;

public class DemoTest03 {

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的成绩,按回车键确定...");
int grade = sc.nextInt();
char rank;
/*
确定成绩的范围,具体到数据
*/
if(grade >= 90) rank = 'S';
else if(grade >= 80) rank = 'A';
else if(grade >= 70) rank = 'B';
else if(grade >= 60) rank = 'C';
else rank = 'D';
/*
switch不能判断表达式
在JDK1.5之前,switch循环只支持byte short char int四种数据类型.

JDK1.5 在switch循环中增加了枚举类与byte short char int的包装类------》对四个包装类的支持是因为java编译器
在底层手动进行拆箱,而对枚举类的支持是因为枚举类有一个ordinal方法,该方法实际上是一个int类型的数值.

JDK1.7在switch循环中增加了String类型-------》但实际上String类型有一个hashCode算法,结果也是int类型.

而byte short char类型可以在不损失精度的情况下向上转型成int类型.所以总的来说,可以认为switch中只支持int.
*/
switch (rank) {
case 'S' :
System.out.println("优秀");
break;
case 'A' :
System.out.println("中");
break;
case 'B' :
System.out.println("良好");
break;
case 'C' :
System.out.println("及格");
break;
case 'D' :
System.out.println("不及格");
break;
default :
System.out.println("系统错误,不存在的等级!");
break;
}
}
}

❹ 怎么用java编程,实现分数的加减乘除运算

package Rational;

import java.util.StringTokenizer;
/**
* @author SunKun
* 分数四则运算
*/
public class Calculator {
int numerator; // 分子
int denominator; // 分母

Calculator(){
}

Calculator(int a,int b){
if(a == 0){
numerator = 0;
denominator = 1;
}
else{
setNumeratorAndDenominator(a,b);
}
}

void setNumeratorAndDenominator(int a, int b){ // 设置分子和分母
int c = f(Math.abs(a),Math.abs(b)); // 计算最大公约数
numerator = a / c;
denominator = b / c;
if(numerator<0 && denominator<0){
numerator = - numerator;
denominator = - denominator;
}
}

int getNumerator(){
return numerator;
}

int getDenominator(){
return denominator;
}

int f(int a,int b){ // 求a和b的最大公约数
if(a < b){
int c = a;
a = b;
b = c;
}
int r = a % b;
while(r != 0){
a = b;
b = r;;
r = a % b;
}
return b;
}

Calculator add(Calculator r){ // 加法运算
int a = r.getNumerator();
int b = r.getDenominator();
int newNumerator = numerator * b + denominator * a;
int newDenominator = denominator * b;
Calculator result = new Calculator(newNumerator,newDenominator);
return result;
}

Calculator sub(Calculator r){ // 减法运算
int a = r.getNumerator();
int b = r.getDenominator();
int newNumerator = numerator * b - denominator * a;
int newDenominator = denominator * b;
Calculator result = new Calculator(newNumerator,newDenominator);
return result;
}

Calculator muti(Calculator r){ // 乘法运算
int a = r.getNumerator();
int b = r.getDenominator();
int newNumerator = numerator * a;
int newDenominator = denominator * b;
Calculator result = new Calculator(newNumerator,newDenominator);
return result;
}

Calculator div(Calculator r){ // 除法运算
int a = r.getNumerator();
int b = r.getDenominator();
int newNumerator = numerator * b;
int newDenominator = denominator * a;
Calculator result = new Calculator(newNumerator,newDenominator);
return result;
}

static Calculator qiuyu(double left,double right){ // 求余运算
double point_result = Math.IEEEremainder(left, right);
int r1 = (int)point_result;
double r2 = point_result - r1;
int newNumerator = r1*10000 + (int)(r2*10000);
int newDenominator = 10000;
Calculator result = new Calculator(newNumerator,newDenominator);
return result;
}

static Calculator pow(double left,double right){ // 求幂运算left^right
double point_result = Math.pow(left, right);
int r1 = (int)point_result;
double r2 = point_result - r1;
int newNumerator = r1*10000 + (int)(r2*10000);
int newDenominator = 10000;
Calculator result = new Calculator(newNumerator,newDenominator);
return result;
}

static Calculator max(double left,double right){ // 求两数中的较大值
double point_result = Math.min(left, right);
int r1 = (int)point_result;
double r2 = point_result - r1;
int newNumerator = r1*10000 + (int)(r2*10000);
int newDenominator = 10000;
Calculator result = new Calculator(newNumerator,newDenominator);
return result;
}

static Calculator min(double left,double right){ // 求两数中的较小值
double point_result = Math.min(left, right);
int r1 = (int)point_result;
double r2 = point_result - r1;
int newNumerator = r1*10000 + (int)(r2*10000);
int newDenominator = 10000;
Calculator result = new Calculator(newNumerator,newDenominator);
return result;
}

// 封装了具体运算,主要为对输入进行转换,对输出封装
public static void compute(String data1,String operation,String data2){
StringTokenizer fenxi = new StringTokenizer(data1,"/");
int data1_1 = Integer.parseInt(fenxi.nextToken());
int data1_2 = Integer.parseInt(fenxi.nextToken());
fenxi = new StringTokenizer(data2,"/");
int data2_1 = Integer.parseInt(fenxi.nextToken());
int data2_2 = Integer.parseInt(fenxi.nextToken());

Calculator r1 = new Calculator(data1_1,data1_2);
Calculator r2 = new Calculator(data2_1,data2_2);

Calculator result;
int a,b;
if(operation.equals("+")){ // 两数相加
result = r1.add(r2);
a = result.getNumerator();
b = result.getDenominator();
System.out.println(data1+" "+operation+" " +data2+" = " + a + "/" + b);
}

if(operation.equals("-")){ // 两数相减
result = r1.sub(r2);
a = result.getNumerator();
b = result.getDenominator();
System.out.println(data1+" "+operation+" " +data2+" = " + a + "/" + b);
}

if(operation.equals("*")){ // 两数相乘
result = r1.muti(r2);
a = result.getNumerator();
b = result.getDenominator();
System.out.println(data1+" "+operation+" " +data2+" = " + a + "/" + b);
}

if(operation.equals("/")){ // 两数相除
result = r1.div(r2);
a = result.getNumerator();
b = result.getDenominator();
System.out.println(data1+" "+operation+" " +data2+" = " + a + "/" + b);
}

if(operation.equals("%")){ // 两数求余
double left = (double)data1_1/(double)data1_2;
double right = (double)data2_1/(double)data2_2;
result = qiuyu(left,right);
a = result.getNumerator();
b = result.getDenominator();
System.out.println(data1+" "+operation+" " +data2+" = " + a + "/" + b);
}

if(operation.equals("^")){ // 两数求幂
double left = (double)data1_1/(double)data1_2;
double right = (double)data2_1/(double)data2_2;
result = pow(left,right);
a = result.getNumerator();
b = result.getDenominator();
System.out.println(data1+" "+operation+" " +data2+" = " + a + "/" + b);
}

if(operation.equals("max")){ // 两数中的较大值
double left = (double)data1_1/(double)data1_2;
double right = (double)data2_1/(double)data2_2;
result = max(left,right);
a = result.getNumerator();
b = result.getDenominator();
System.out.println(data1+" "+operation+" " +data2+" = " + a + "/" + b);
}

if(operation.equals("min")){ // 两数中的较小值
double left = (double)data1_1/(double)data1_2;
double right = (double)data2_1/(double)data2_2;
result = min(left,right);
a = result.getNumerator();
b = result.getDenominator();
System.out.println(data1+" "+operation+" " +data2+" = " + a + "/" + b);
}
}
}

❺ 用java怎么写分数

你可以写个分数类,下面是参考:

public class Fraction {
private Integer numerator; // 分子;
private Integer denominator; // 分母

/**
* 构造器
*/
public Fraction() {
}

public Fraction(Integer numerator, Integer denominator) {
this.numerator = numerator;
this.denominator = denominator;
}

public Integer getDenominator() {
return denominator;
}

public void setDenominator(Integer denominator) {
this.denominator = denominator;
}

public Integer getNumerator() {
return numerator;
}

public void setNumerator(Integer numerator) {
this.numerator = numerator;
}

/**
* 求最大公约数
*
* @return
*/
private int getGCD(int a, int b) {
int max = Math.max(a, b);
int min = Math.min(a, b);
int mod = max % min;
if (mod == 0) {
return min;
} else {
return this.getGCD(mod, min);
}
}

/**
* 简化和约分
*
* @return
*/
public Fraction simplify() {
// 格式化
if (this.numerator == 0) {
this.denominator = null;
return this;
} else if (this.denominator * this.numerator > 0
&& this.denominator < 0) {
this.denominator = Math.abs(this.denominator);
this.numerator = Math.abs(this.numerator);
return this;
} else if (this.denominator < 0) {
this.denominator = Math.abs(this.denominator);
this.numerator = -this.numerator;
return this;
}
// 约分
int gcd = this.getGCD(Math.abs(denominator), Math.abs(numerator));
if (gcd == 1) {
return this;
} else {
this.denominator = this.denominator / gcd;
this.numerator = this.numerator / gcd;
return this;
}
}

/**
* 加法
*
* @param fraction
* @return
*/
public Fraction add(Fraction fraction) {
Integer resultDenominator = Math.abs(this.denominator)
* Math.abs(fraction.getDenominator());
Integer resultNumerator = this.numerator * fraction.getDenominator()
+ this.denominator * fraction.getNumerator();
Fraction result = new Fraction(resultNumerator, resultDenominator);
return result.simplify();
}

/**
* 减法
*
* @param fraction
* @return
*/
public Fraction minus(Fraction fraction) {
Integer resultDenominator = Math.abs(this.denominator)
* Math.abs(fraction.getDenominator());
Integer resultNumerator = this.numerator * fraction.getDenominator()
- this.denominator * fraction.getNumerator();
Fraction result = new Fraction(resultNumerator, resultDenominator);
return result.simplify();
}

/**
* 乘法
*
* @param fraction
* @return
*/
public Fraction multiply(Fraction fraction) {
Fraction result = null;
if (this.numerator == 0 || fraction.numerator == 0) {
result = new Fraction(0, null);
}
Integer resultDenominator = this.denominator
* fraction.getDenominator();
Integer resultNumerator = this.numerator * fraction.getNumerator();
result = new Fraction(resultNumerator, resultDenominator);
return result.simplify();
}

/**
*除法
*
* @param fraction
* @return
*/
public Fraction divide(Fraction fraction) {
Fraction result = null;
if (this.numerator == 0) {
result = new Fraction(0, null);
}
Integer resultDenominator = this.denominator * fraction.getNumerator();
Integer resultNumerator = this.numerator * fraction.getDenominator();
result = new Fraction(resultNumerator, resultDenominator);
return result.simplify();
}

@Override
public String toString() {
return "[分子]" + this.numerator + "-[分母]" + this.denominator;
}

/**
* 测试
*
* @param args
*/
public static void main(String[] args) {
Fraction f1 = new Fraction(1, 2);
Fraction f2 = new Fraction(2, 4);
System.out.println(f1);
System.out.println(f2);
System.out.println(f2.simplify());
System.out.println(f1.add(f2));
System.out.println(f1.minus(f2));
System.out.println(f1.multiply(f2));
System.out.println(f1.divide(f2));
}
}

❻ 二分之一在java中怎么表示

二进制数据是用0和1两个数码来表示的数。
Java中表示分数怎么用 不加double 就是0.0; 记得加double。
计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。
“Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。”

阅读全文

与java分数相关的资料

热点内容
桌面云配置文件分离 浏览:505
iphone5如何升级4g网络 浏览:5
团购是在哪个app 浏览:897
打开多个word文档图片就不能显示 浏览:855
腾讯新闻怎么切换版本 浏览:269
app安装失败用不了 浏览:326
桌面文件鼠标点开会变大变小 浏览:536
手机误删系统文件开不了机 浏览:883
微信兔子甩耳朵 浏览:998
android蓝牙传文件在哪里 浏览:354
苹果6s软解是真的吗 浏览:310
c语言代码量大 浏览:874
最新网络卫星导航如何使用 浏览:425
以下哪些文件属于图像文件 浏览:774
zycommentjs 浏览:414
确认全血细胞减少看哪些数据 浏览:265
文件有哪些要求 浏览:484
cad打开时会出现两个文件 浏览:65
什么是转基因网站 浏览:48
手柄设备有问题代码43 浏览:921

友情链接