我写了下面的代码来满足程序要求如下:
写一个程序,读取三个整数并显示三个数字的平均值。
输入说明:在控制台输入三个整数(非负整数)。
输出注释(提示和标签):程序提示输入带有以下字符串的三个整数:“输入第一个整数。”、“输入第二个整数。”、“输入第三个整数。”然后程序打印
名称规范:您的应用程序类应该被称为Average3:
我的源代码:
import java.util.Scanner;
public class Average3 {
/**
* @param args
*/
public static void main(String[] args) {
int AVG, NUMBER1, NUMBER2, NUMBER3;
System.out.println("Enter the first integer.");
Scanner keyboard = new Scanner(System.in);
NUMBER1 = keyboard.nextInt();
System.out.println("Enter the second integer.");
NUMBER2 = keyboard.nextInt();
System.out.println("Enter the third integer.");
NUMBER3 = keyboard.nextInt();
AVG = (NUMBER1 + NUMBER2 + NUMBER3) / 3;
System.out.println("The average of NUMBER1, NUMBER2, and NUMBER3 = " + AVG);
}
}
我的程序编译得很好,但我知道我可以用一个关联的方法实现和调用一个对象,但我很难从哪里开始我从概念上理解这些方法和对象,但远不及编写代码。有人有什么建议吗?
作为一个非常基本的例子,在一个. java文件中,您可以创建一个“知道如何”获取输入和创建平均值的类,比如:
// takes input and stores in a list which it
// can do mathematical operations on
class InputMath
{
// ivar to store input
private List<int> list;
// contructor
public AverageInput() {}
// gets user input and pushes to `list`
public void getInput(String question) {}
// works out the average of `list`
public int average() {}
// works out the total of `list`
public int total() {}
...
}
然后你可以在你想要的地方使用这个类,比如在你的“main”函数中
import InputMath;
class Main
{
public static void main(String args)
{
InputMath im = new InputMath();
for(int i=0; i<3; i++)
{
im.getInput("Enter number " + (i+1));
}
System.out.println(im.average());
}
}
但是就像许多评论建议的那样,你真的需要通读一些材料/参考/例子,然后“四处玩耍”
我不知道我是否会为了这么简单的任务而使用对象。但是,既然你问了,我会解释如果需要物品我会怎么做,
我将创建一个对象(类),它有一个ArrayList
这个对象将有两个公共方法
void addNumber(int number)
和double/int getAverage()
addNumber只需向数组列表中添加一个数字,getAverage就会遍历整个列表,将所有数字相加,然后除以其大小(别忘了-1)
在main中,创建该类的新对象,然后每次扫描扫描仪时,使用addNumber方法将输入的编号插入数组列表。
我想我应该怎么做,因为我被指示使用对象。
祝你好运
首先,我将创建一个类InputData
,它将存储来自用户的输入:
class InputData {
public int number1;
public int number2;
public int number3;
}
这本身就是一个有用的通用技术:将几个相关的值收集到一个数据结构中。然后,您可以重写您的main
方法来使用这个类,而不是三个单独的int
变量,或者您可以更进一步,向InputData
类添加一些行为。显然要添加的第一个行为是计算平均值:
class InputData {
public int number1;
public int number2;
public int number3;
public int average() {
return (number1 + number2 + number3) / 3;
}
}
有了这个,你可以重写main
如下:
public class Average3 {
static class InputData {
public int number1;
public int number2;
public int number3;
public int average() {
return (number1 + number2 + number3) / 3;
}
}
/**
* @param args
*/
public static void main(String[] args) {
InputData input = new InputData();
System.out.println("Enter the first integer.");
Scanner keyboard = new Scanner(System.in);
input.number1 = keyboard.nextInt();
System.out.println("Enter the second integer.");
input.number2 = keyboard.nextInt();
System.out.println("Enter the third integer.");
input.number3 = keyboard.nextInt();
System.out.println("The average of NUMBER1, NUMBER2, and NUMBER3 = "
+ input.average());
}
}
请注意,我已经使InputData
成为Average3
的静态内部类。它也可以是同一文件中的一个单独的顶级类(只要它不是public
)或单独文件中的一个类。
对此的一个改进是在InputData
类中使用数组而不是单独的int
字段。然后您的程序可能看起来像这样:
public class Average3 {
static class InputData {
public int[] numbers;
InputData(int size) {
numbers = new int[size];
}
public int average() {
int sum = 0;
for (int number : numbers) {
sum += number;
}
return sum / numbers.length;
}
}
/**
* @param args
*/
public static void main(String[] args) {
String[] prompts = { "first", "second", "third" };
InputData input = new InputData(3);
Scanner keyboard = new Scanner(System.in);
for (int i = 0; i < prompts.length; ++i) {
System.out.println("Enter the " + prompts[i] + " integer.");
input.numbers[i] = keyboard.nextInt();
}
System.out.println("The average of NUMBER1, NUMBER2, and NUMBER3 = "
+ input.average());
}
}
在这里,我为InputData
添加了一个构造函数来初始化数组,并给它一个参数来设置数组的大小。
然后,您可以引入额外的改进,如使进审量值动态(使用<代码>ArrayList
换句话说,你不知道下一个作业会带来什么,因此,不管你如何概括,超出当前作业可能是浪费工作。
本文向大家介绍在Java中使用方法重载,包括了在Java中使用方法重载的使用技巧和注意事项,需要的朋友参考一下 一个类可以有多个具有相同名称的方法,但方法的参数列表不应相同。这称为方法重载。方法重载有点类似于构造函数重载。 演示此的程序如下所示- 示例 输出结果 现在让我们了解上面的程序。 在方法重载的实现中,使用三种方法创建PrintValues类。其中一个采用int类型的参数,另一个采用dou
问题内容: 我是Java的初学者,我正在阅读有关如何通过键盘上的方法为变量赋值的主题。书中给出的程序如下: 我想问以下问题: 以下语句做了什么? 如果是的对象,那么什么是新的,并且上述声明右侧的声明做了什么? 为什么使用不同的方法将整数值放入intnumber和将float值放入floatnumber? 问题答案: 我建议您不要使用。专门为此目的设计并在Java 5中引入。请参阅以下链接以了解如何
问题内容: 例: 我发现上面的代码在Java中是完全合法的。我有以下问题。 在方法内部拥有类定义的用途是什么? 是否会为生成一个类文件 我很难以面向对象的方式来想象这个概念。在行为中具有类定义。也许有人可以用等效的真实例子告诉我。 方法中的抽象类对我来说听起来有点疯狂。但不允许使用任何接口。这背后有什么原因吗? 问题答案: 这称为本地课程。 2很简单:是的,将生成一个类文件。 1和3是同一个问题。
问题内容: 有人可以向我解释该类中定义的方法的概念吗?它是如何使用的,目的是什么? 问题答案: 从文档: 返回对象的字符串表示形式。通常,该 方法返回一个“以文本形式表示”此对象的字符串。结果应该是简洁易懂的表示形式,便于人们阅读。建议所有子类都重写此方法。 用于类的方法 返回一个字符串,该字符串由对象作为实例的类的名称,符号字符“ @”和对象的哈希码的无符号十六进制表示组成。换句话说,此方法返回
问题内容: 以下代码可以编译并正常运行。 在此代码中,要调用的方法是接受type参数的方法 该文档说。 如果多个成员方法既可访问又可应用于方法调用,则必须选择一个成员方法来为运行时方法分派提供描述符。Java编程语言使用选择最具体方法的规则。 但是我不明白何时将接受原始参数的代码中的方法之一修改为接受包装器类型的参数,例如, 发出编译时错误。 对temp的引用含糊不清,methodoverload
问题内容: 我想知道何时在类中使用get和set方法(getName,setName),何时使用简单方法代替 这是使用set和get方法的类的示例 谢谢 问题答案: 使用Getters / Setters与使用Fields 根据经验: 使用直接来自同一类的变量(实际上来自同一.java文件,因此内部类也可以),使用其他类的Getters / Setters。