Java 按数组排序的7个分数,加在一起,然后减少。在爪哇
这是我的问题,我需要创建一个运行以下指令的程序 创建名为Fraction的java类。此类用于表示 两个整数的比率。包括允许用户 设置分子和分母。还包括一个 在屏幕上以定量的形式显示分数(例如5/9)。这种方法 不需要将分数减少到最低项 分数类应包含以下内容:Java 按数组排序的7个分数,加在一起,然后减少。在爪哇,java,arrays,class,sorting,fractions,Java,Arrays,Class,Sorting,Fractions,这是我的问题,我需要创建一个运行以下指令的程序 创建名为Fraction的java类。此类用于表示 两个整数的比率。包括允许用户 设置分子和分母。还包括一个 在屏幕上以定量的形式显示分数(例如5/9)。这种方法 不需要将分数减少到最低项 分数类应包含以下内容: 用于存储分子、分母和比值的私有实例变量 设置所有实例变量的构造函数 获取和设置实例变量的公共方法 名为reduce()的公共方法,返回分数的最低项 一个名为toString()的公共方法,它返回一个字符串,该字符串包含作为比率的分数 一
- 用于存储分子、分母和比值的私有实例变量
- 设置所有实例变量的构造函数
- 获取和设置实例变量的公共方法
- 名为reduce()的公共方法,返回分数的最低项
- 一个名为toString()的公共方法,它返回一个字符串,该字符串包含作为比率的分数
- 一个私有方法名gcd(),返回两个整数的最大公约数
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;
}
}
}
到目前为止,我所能做的就是从一个.txt文件中打印出7个分数,格式如下:67244311881010026
但是我想要一个文本文件,格式如下:6/7 2/4 3/4 3/18 1/8 10/20 2/6
我不知道如何让除沫器读取“/”和“”
感谢您的帮助。从方法中,您可以将所需的分隔符作为正则表达式链接到Scanner的构造函数中
您需要空白或/
符号,因此类似的东西应该可以工作。未经测试,您可能必须更改正则表达式。如果你这样做了,只需在线使用正则表达式计算器来正确地修复它
Scanner keyb = new Scanner(new FileInputStream(new File("fractions")).useDelimiter("[/ | \s*]");
感谢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("[/ | *]");
我的建议是:从定义读取文件中的一个分数开始。然后做N次。
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("[/ | *]");