7 дробей, отсортированных в массиве, Java?JAVA

Программисты JAVA общаются здесь
Anonymous
7 дробей, отсортированных в массиве, Java?

Сообщение Anonymous »

И вот в чем моя проблема. Мне нужна помощь, чтобы попытаться понять, что я делаю не так, и двигаться дальше. Мне нужно создать программу, которая выполняет эти инструкции.

Создайте класс Java с именем Fraction. Этот класс используется для представления отношения двух целых чисел. Включите методы-мутаторы, которые позволяют пользователю устанавливать числитель и знаменатель. Также включите метод отображения дроби на экране в виде рациона (например, 5/9). Этот метод не требует сведения дроби к наименьшему значению.
Класс дроби должен содержать следующее:
  • Частные переменные экземпляра для хранения числителя, знаменателя и значения отношения.
  • Конструкторы, которые устанавливают все переменные экземпляра.
  • Открытые методы для получения и установки переменных экземпляра.
  • Открытый метод метод с именем сокращение(), который возвращает наименьшие члены дроби.
  • Открытый метод с именем toString(), который возвращает строку, содержащую дробь в виде отношения.
  • Закрытый метод с именем gcd(), который возвращает наибольший общий делитель двух целых чисел.
Создайте тестовую программу, которая позволит пользователю создать массив из 7 дробей. Затем программа отсортирует дробь в порядке возрастания. Высшую и низшую фракции отбрасывают, а оставшиеся дроби складывают. Программа должна отображать все дроби и их сумму. Сумма должна быть приведена к наименьшему значению и отображена на экране. Например, если сумма равна 20/60, программа должна отображать 1/3.
Напишите в тестовой программе метод сортировки, чтобы отсортировать массив дробей и вычислить сумму.
Предположим, у вас есть следующие 7 дробей: 6/7, 2/4, 3/4, 3/18, 1/8, 10/20, 2/6, а затем пример вывода после если отбросить самую низкую и самую большую дроби, получится:
3/18 + 2/6 + 2/4 + 10/20 + 3/4 = 9/4

Я совершенно не понимаю, как это решить, и застрял на том месте, где нахожусь. Ниже приведена копия моего класса и файла .main. У меня есть несколько разных вещей, которые я пробовал, закомментированных с помощью '//', поэтому заранее извините за длинные коды. Я снова и снова пытался это понять и застрял на несколько дней. Он продолжает выдавать мне эту странную ошибку под названием null.
Как мне заставить это работать?
import java.io.*;
import java.util.*;

public class Arrays_hw5 {

private static final Scanner keyb = null;
public static void main(String[] args) {
Fraction [] fr = new Fraction[7];
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("Fraction"));
keyb = new Scanner(fis);
} catch (FileNotFoundException e) {
e.printStackTrace();
}

for (int i = 0; i < fr.length; i++) {
//System.out.println("Enter numerator then denominator, hit enter after each entry: ");
// fr = new Fraction(i, i);
// fr.getNumerator(keyb.nextInt());
// fr.denominator(keyb.nextInt());
System.out.print(fr + " ");
}
}

public static void selectionSort(int[]arr)
{
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;
}
}
}

Вот класс дроби.
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;
}
}

Вернуться в «JAVA»