【发布时间】:2012-01-07 01:42:43
【问题描述】:
我已经解决了这个问题几个小时,并且我已经取得了重大进展(很大程度上要感谢搜索此站点并应用在类似问题中找到的提示),但我现在似乎陷入了僵局。请看一下我所做的事情,或者指出我哪里出错并提供伪代码来纠正,或者指出我可以通过填补我的理解空白来帮助我的资源。我真的觉得好像我只是错过了一个让这个话题对我有意义的小细节。
应用程序的目的是根据用户输入的 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 作为分数。
非常感谢您在方法和构造函数方面的帮助,以及在命名约定方面的建设性 cmets。您的 cmets 带领我去的地方很可能使我从考试不及格变成了高分!几个星期以来,我一直在为这个概念苦苦挣扎,即使是在一位非常耐心朋友的帮助下。
【问题讨论】:
-
我认为拥有一个带有分子和分母的
Fraction或Rational类以及可能的 I/O 例程会极大地简化您的代码(可能还有您的想法)。 -
我的意思是,考虑重命名类,类名应该是名词...我累了...
标签: java variables methods parameter-passing