这是我的问题,我需要创建一个运行以下指令的程序。
创建名为Fraction的java类。此类用于表示两个整数的比率。包括允许用户设置分子和分母的mutator方法。还包括一种在屏幕上以定量显示分数的方法(例如5/9)。这种方法不需要将分数减少到最低项。
分数类应包含以下内容:
创建一个测试程序,允许用户创建7个分数的数组。然后程序将按升序对分数进行排序。最高和最低的分数被扔掉,其余的分数相加。程序应显示所有分数及其总和。总和应减少到最低项并显示在屏幕上。例如,如果总和为20/60,则程序应显示1/3。
在测试程序中编写一个排序方法,对分数数组进行排序并计算总和。
假设您有以下7个分数:6/7, 2/4, 3/4, 3/18, 1/8, 10/20, 2/6,那么丢弃最低和最大分数后的输出html" target="_blank">示例将是:
3 / 18 2 / 6 2 / 4 10 / 20 3 / 4 = 9 / 4
我完全不知道该如何解决这个问题,我陷入了困境。下面是我的课程和。主文件。我试过用“//”注释一些不同的东西,很抱歉代码太长。
package homework_5;
import java.io.*;
import java.util.*;
import java.util.regex.Pattern;
public class Arrays_hw5 {
private static final Scanner keyb = null;
public static void main(String[] args) {
Fraction [] fr = new Fraction[7];
// Fraction fr1 = new Fraction();
// Fraction fr2 = new Fraction();
// Fraction fr3 = new Fraction();
// Fraction fr4 = new Fraction();
// Fraction fr5 = new Fraction();
// Fraction fr6 = new Fraction();
// Fraction fr7 = new Fraction();
String reduce = "";
int numerator = 0, denominator = 0;
Scanner keyb = null;
FileInputStream fis = null;
// Scanner keyb = new Scanner(System.in);
try {
fis = new FileInputStream(new File("fractions"));
keyb = new Scanner(fis);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
// keyb.useDelimiter("/");
// keyb.useDelimiter(" ");
// fr1.setNumerator(keyb.nextInt());
// fr1.setDenominator(keyb.nextInt());
// System.out.println(fr1);
// fr2.setNumerator(keyb.nextInt());
// fr2.setDenominator(keyb.nextInt());
// System.out.println(fr2);
// fr3.setNumerator(keyb.nextInt());
// fr3.setDenominator(keyb.nextInt());
// System.out.println(fr3);
// fr4.setNumerator(keyb.nextInt());
// fr4.setDenominator(keyb.nextInt());
// System.out.println(fr4);
// fr5.setNumerator(keyb.nextInt());
// fr5.setDenominator(keyb.nextInt());
// System.out.println(fr5);
// fr6.setNumerator(keyb.nextInt());
// fr6.setDenominator(keyb.nextInt());
// System.out.println(fr6);
// fr7.setNumerator(keyb.nextInt());
// fr7.setDenominator(keyb.nextInt());
// System.out.println(fr7);
for (int i = 0; i < fr.length; i++)
{
//System.out.println("Enter numerator then denominator, hit enter after each entry: ");
fr[i] = new Fraction(i, i);
fr[i].setNumerator(keyb.nextInt());
fr[i].setDenominator(keyb.nextInt());
System.out.print(fr[i] + " ");
//System.out.print(fr[i].decimal(numerator, denominator));
}
// Arrays.sort(fr);
// for (int i = 0; i < fr.length; i++)
// System.out.println(fr[i].decimal(numerator, denominator));
// Fraction [] frac = {fr[1], fr[2], fr[3], fr[4], fr[5], fr[6], fr[7]};
// Arrays.sort(frac);
// for (int i = 0; i < 7; i++)
// System.out.println(frac[i]);
}
public static void selectionSort(int[]arr) //sorting array
{
int smallest = 0;
for (int outer = 0; outer < arr.length - 1; outer++)
{
smallest = outer;
for(int inner = outer + 1; inner < arr.length; inner++)
{
if (arr[inner] < arr[smallest])
smallest = inner;
}
int v = arr[outer];
arr[outer] = arr[smallest];
arr[smallest] = v;
}
}
}
这是我的分数课
package homework_5;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Fraction {
public int numerator = 1;
public int denominator = 1;
public int gcd;
public Fraction() {
super();
}
public Fraction(int n, int d) {
numerator = n;
denominator = d;
}
public int getNumerator() {
return numerator;
}
public void setNumerator(int numerator) {
this.numerator = numerator;
}
public int getDenominator() {
return denominator;
}
public void setDenominator(int denominator) {
this.denominator = denominator;
}
private static int gcd(int numerator, int denominator) {
return denominator == 0 ? numerator : gcd(denominator, numerator % denominator);
}
public double decimal(double numerator, double denominator) {
return numerator / denominator;
}
public static String reduce(int numerator, int denominator) {
int gcd = gcd(numerator, denominator);
return (numerator / gcd) + "/" + (denominator / gcd);
}
@Override
public String toString() {
return numerator + "/" + denominator;
}
}
到目前为止,我所能做的就是打印出7个分数从一个. txt文件格式像:6 7 2 4 3 4 3 18 1 8 10 20 2 6但我想有一个文本文件格式像:6/7 2/4 3/4 3/18 1/8 10/20 2/6我不知道如何让分隔符读取'/'和'。
谢谢你的任何帮助。
感谢Ron的提示,我让程序使用此代码读取“/”和“”:现在我只需要弄清楚如何排序、添加和执行其余步骤。
Scanner keyb = null;
FileInputStream fis = null;
// Scanner keyb = new Scanner(System.in);
try {
fis = new FileInputStream(new File("fractions"));
keyb = new Scanner(fis);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
keyb.useDelimiter("[/ | *]");
从java文档中,您可以将想要的分隔符作为正则表达式方法链到Scanner的构造函数中。
您需要空格或符号,这样应该可以。未经测试,您可能必须更改正则表达式。如果您这样做了,只需在线使用regex计算器就可以正确地修复它。
Scanner keyb = new Scanner(new FileInputStream(new File("fractions")).useDelimiter("[/ | \s*]");
这就是我的问题。我需要帮助,试图找出我做错了什么,并从那里开始。我需要创建一个运行这些指令的程序。 创建名为Fraction的java类。该类用于表示两个整数的比率。包括允许用户设置分子和分母的突变体方法。还包括在屏幕上显示分数作为配给(例如5/9)的方法。此方法不需要将分数降低到最低项。 分数类应包含以下内容: •用于存储分子、分母和比值的私有实例变量。 •设置所有实例变量的构造函数。 •获取和
问题内容: 我有一个带有数字值的字符串键数组,可用于具有每个标签出现次数的标签列表中,因此: 这是为了我可以按降序显示标签列表,因此: 我可以使用 arsort 通过出色的值进行反向排序,但是我还希望具有相同数字值的所有标签都按字母顺序排序,因此最终结果可以是: 有办法可以做到吗?我猜想 usort 可能是要走的路,但是我看了php.net上的示例,我的眼睛呆呆了!非常感谢!!! 问题答案: 看一
我在Java中有一个数组,其中包含一组随机日期: {2015年1月20日、2015年2月12日、2015年2月20日、2015年6月21日、2015年7月12日、2015年7月28日、2015年7月30日、2015年9月24日、2015年12月31日} 如何按月将此阵列拆分为多个阵列? 我想要 {2015年1月20日}、{2015年2月12日、2015年2月20日}、{2015年6月21日}、{2
要按升序对其进行int排序,我可以使用: 我怎样才能按照递减的顺序来做呢?
对于一项作业,我必须要求学生人数。提示用户输入学生的lastname和分数,然后按降序对分数排序并显示。我已经做了所有这些,但不知道如何排序的名字,如果他们有相同的分数。 约翰33岁 亚当33 菲尔22 我无法得到所需的输出。我通常能解决这类问题,但这个问题让我分崩离析…请救命!
但是,此修复: 有没有更优雅的方式这样做?