Я работал над этой проблемой в течение нескольких часов, и я добился значительного прогресса (во многом благодаря поиску на этом сайте и применению советов, найденных в похожих вопросах), но теперь я нахожусь в тупике. Пожалуйста, ознакомьтесь с тем, что я сделал, и укажите, где я ошибся, и предоставьте исправленный код psuedo, или укажите мне ресурс, который может помочь мне, восполнив пробел в моем понимании. Я действительно чувствую, что мне просто не хватает крошечной детали, которая поможет мне понять эту тему.
Цель приложения состоит в том, чтобы складывать, вычитать, умножать и делить дроби на основе пользовательского ввода 2 числителей и 2 знаменателей (да, это для назначения курса, поэтому просьба не указывать исходный код, а указатели на где я ошибся концептуально). Я разбил его на этапы, первым из которых является получение ввода от пользователя и его выдача для подтверждения.
Файл метода:
package Fractions;
import java.util.Scanner;
public class FractionValues
{
// Declare integer class variables for package Fractions
int fracNum1;
int fracDenom1;
int fracNum2;
int fracDenom2;
// Obtain four integers from user input and output to console as two fractions
public static void getFractions(int fracNum1, int fracDenom1, int fracNum2, int fracDenom2)
{
Scanner inInt = new Scanner(System.in);
System.out.println("Enter an integer for the numerator of the first " +
"fraction: ");
fracNum1 = inInt.nextInt();
System.out.println("Enter an integer for the denominator of the first " +
"fraction: ");
fracDenom1 = inInt.nextInt();
System.out.println("Enter an integer for the numerator of the second " +
"fraction: ");
fracNum2 = inInt.nextInt();
System.out.println("Enter an integer for the denominator fo the second " +
"fraction: ");
fracDenom2 = inInt.nextInt();
System.out.println("===================================================" +
"=================");
}
// Return values of variables from input for use in other classes
public int getFracNum1() {return fracNum1;}
public int getFracDenom1() {return fracDenom1;}
public int getFracNum2() {return fracNum2;}
public int getFracDenom2() {return fracDenom2;}
}
основной файл метода:
package Fractions;
public class TestFractions2
{
public static void main(String[] args)
{
// Call getFractions method to assign variables from user input
FractionValues newFracNum1 = new FractionValues();
newFracNum1.getFracNum1();
FractionValues newFracDenom1 = new FractionValues();
newFracDenom1.getFracDenom1();
FractionValues newFracNum2 = new FractionValues();
newFracNum2.getFracNum2();
FractionValues newFracDenom2 = new FractionValues();
newFracDenom2.getFracDenom2();
System.out.println("You entered " + newFracNum1.getFracNum1() + "/" + newFracDenom1.getFracDenom2() + " and " +
newFracNum2.getFracNum2() + "/" + newFracDenom2.getFracDenom2() + " as your fractions.");
}
}
По крайней мере, после некоторой борьбы оба файла теперь компилируются. Тем не менее, приложение не работает. Это вывод, который я получаю:
Вы указали 0/0 и 0/0 как свои дроби.
Как только эта часть сработает, я добавлю оператор if, предлагающий пользователю ответить, желает ли он продолжить свой выбор или вернуться к подсказкам ввода.
Основываясь на ценном отзыве ниже и ограничениях задания, я получил следующее:
package Fractions;
import java.util.Scanner;
public class FractionValues
{
int fracNum1;
int fracDenom1;
int fracNum2;
int fracDenom2;
Scanner inInt = new Scanner(System.in);
// Obtain four integers from user input
public int getFracNum1()
{
System.out.println("Enter an integer for the first numerator: ");
return fracNum1 = inInt.nextInt();
}
public int getFracDenom1()
{
System.out.println("Enter an integer for the first denominator: ");
return fracDenom1 = inInt.nextInt();
}
public int getFracNum2()
{
System.out.println("Enter an integer for the second numerator: ");
return fracNum2 = inInt.nextInt();
}
public int getFracDenom2()
{
System.out.println("Enter an integer for the second denominator: ");
return fracDenom2 = inInt.nextInt();
}
}
и основной способ применения:
package Fractions;
public class TestFractions2
{
public static void main(String[] args)
{
// Call FractionValues methods to assign variables from user input
FractionValues newFracNum1 = new FractionValues();
FractionValues newFracDenom1 = new FractionValues();
FractionValues newFracNum2 = new FractionValues();
FractionValues newFracDenom2 = new FractionValues();
System.out.println("You entered " + newFracNum1.getFracNum1() + "/" +
newFracDenom1.getFracDenom2() + " and " + newFracNum2.getFracNum2() +
"/" + newFracDenom2.getFracDenom2() + " as your fractions.");
}
}
Оба файла компилируются правильно, и я получаю следующий ожидаемый результат:
Введите целое число для первого числителя:
2
Введите целое число для второго знаменателя:
5
Введите целое число для второго числителя:
6
Введите целое число для второго знаменателя:
3
Вы ввели 2/5 и 6/3 как свои дроби.
Большое спасибо за вашу помощь с методами и конструкторами, а также за конструктивные комментарии к соглашениям об именах. Места, из-за которых ваши комментарии привели меня, весьма вероятно, что я не сдал экзамен и не сдал его! Я боролся с этой концепцией в течение нескольких недель, даже с помощью очень терпеливого друга.