Java 仅使用控制台,而不使用ReadLine(),尝试创建一个平均查找程序
Java新手,基本上从昨天开始 好吧,事情是这样的 我想做一个“平均器”,如果你想叫它,它接受随机数量的数字。我不应该在程序中定义它,它必须是任意的。我必须让它在控制台上工作 但我不能使用Console.ReadLine()或Scanner之类的工具。我必须通过控制台本身输入数据。因此,当我调用它时,我会在控制台中键入:Java 仅使用控制台,而不使用ReadLine(),尝试创建一个平均查找程序,java,console,console-application,command-line-arguments,average,Java,Console,Console Application,Command Line Arguments,Average,Java新手,基本上从昨天开始 好吧,事情是这样的 我想做一个“平均器”,如果你想叫它,它接受随机数量的数字。我不应该在程序中定义它,它必须是任意的。我必须让它在控制台上工作 但我不能使用Console.ReadLine()或Scanner之类的工具。我必须通过控制台本身输入数据。因此,当我调用它时,我会在控制台中键入: java AveragerConsole 1 4 82.4 它调用程序并给出三个参数:1、4和82.4 我想我遇到的问题是,我似乎不能这样说: 如果数组中的下一个字段为空,则
java AveragerConsole 1 4 82.4
它调用程序并给出三个参数:1、4和82.4
我想我遇到的问题是,我似乎不能这样说:
如果数组中的下一个字段为空,则计算平均值(检查代码中的第14行)
我的代码如下:
public class AveragerConsole
{
public static void main(String args[])
{
boolean stop = false;
int n = 0;
double x;
double total = 0;
while (stop == false)
{
if (args[n] == "") //Line 14
{
double average = total / (n-1);
System.out.println("Average is equal to: "+average);
stop = true;
}
else
{
x = Double.parseDouble(args[n]);
total = total + x;
n = n + 1;
}
}
}
}
出现以下错误:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at AveragerConsole.main(AveragerConsole.java:14)
您给出了3个输入,数组从0开始计算。您输入的数组
args
如下所示
args[0] = 1
args[1] = 4
args[2] = 82.4
及
更好的实施如下所示
double sum = 0.0;
// No fault tolerant checking implemented
for(String value: args)
sum += Double.parseDouble(value);
double average = sum/args.length;
您给出了3个输入,数组从0开始计算。您输入的数组
args
如下所示
args[0] = 1
args[1] = 4
args[2] = 82.4
及
更好的实施如下所示
double sum = 0.0;
// No fault tolerant checking implemented
for(String value: args)
sum += Double.parseDouble(value);
double average = sum/args.length;
对于字符串值比较,必须使用
equals()
方法
if ("".equals(args[n]))
接下来,数组中的最大有效索引总是array.length-1
。如果您尝试访问array.length
索引,它将为您提供ArrayIndexOutOfBoundsException
出现这种情况可能是因为您的if
计算不正确,因为您使用=
进行字符串值比较
另一方面,我真的怀疑你的状况是否会被评估,除非你在输入所有数字后手动输入一个空白字符串
将while中的条件更改为此,您的程序似乎可以正常运行n
数字。(@SilviuBurcea的解决方案似乎是最好的,因为您不需要自己跟踪n
)
while(n
对于字符串值比较,必须使用equals()
方法
if ("".equals(args[n]))
接下来,数组中的最大有效索引总是array.length-1
。如果您尝试访问array.length
索引,它将为您提供ArrayIndexOutOfBoundsException
出现这种情况可能是因为您的if
计算不正确,因为您使用=
进行字符串值比较
另一方面,我真的怀疑你的状况是否会被评估,除非你在输入所有数字后手动输入一个空白字符串
将while中的条件更改为此,您的程序似乎可以正常运行n
数字。(@SilviuBurcea的解决方案似乎是最好的,因为您不需要自己跟踪n
)
while(n
另外,您不需要n,您已经有了参数的数量,它是args长度。
这是最简单的方法
另外,您不需要n,您已经有了参数的数量,它是args长度。
这是最简单的方法。谢谢您的回复!:)编辑我的代码以澄清:程序必须通过控制台接受随机数量的数字。我不应该在程序中定义它,它必须是任意的。我刚才只是根据您的异常给出了一个示例
java.lang.ArrayIndexOutOfBoundsException:3
@FaresA。现在检查我的答案。是的,看到@SilviuBurcea的循环建议。太棒了,帮了很多忙!:)万分感谢!谢谢你的回复!:)编辑我的代码以澄清:程序必须通过控制台接受随机数量的数字。我不应该在程序中定义它,它必须是任意的。我刚才只是根据您的异常给出了一个示例java.lang.ArrayIndexOutOfBoundsException:3
@FaresA。现在检查我的答案。是的,看到@SilviuBurcea的循环建议。太棒了,帮了很多忙!:)万分感谢!你好,谢谢你的回复!你能解释一下吗?我猜我必须用这个方法来比较ARGs[n]和空白字段?一般来说,我的代码正确吗?与第14行无关?不完全正确!您的while
不是很好,因为我真的怀疑您是否会得到一个空白字符串来检查!你说得对,while
不是个好主意。如上@SilviuBurcea和@TheKojuEffect所建议,将其更改为for循环。谢谢大家!你好,谢谢你的回复!你能解释一下吗?我猜我必须用这个方法来比较ARGs[n]和空白字段?一般来说,我的代码正确吗?与第14行无关?不完全正确!您的while
不是很好,因为我真的怀疑您是否会得到一个空白字符串来检查!你说得对,while
不是个好主意。如上@SilviuBurcea和@TheKojuEffect所建议,将其更改为for循环。谢谢大家!谢谢我现在要试试,如果我发现了,就告诉你:)没问题。享受Java带来的乐趣。:)谢谢我现在要试试,如果我发现了,就告诉你:)没问题。享受Java带来的乐趣。:)