Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 仅使用控制台,而不使用ReadLine(),尝试创建一个平均查找程序_Java_Console_Console Application_Command Line Arguments_Average - Fatal编程技术网

Java 仅使用控制台,而不使用ReadLine(),尝试创建一个平均查找程序

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新手,基本上从昨天开始

好吧,事情是这样的

我想做一个“平均器”,如果你想叫它,它接受随机数量的数字。我不应该在程序中定义它,它必须是任意的。我必须让它在控制台上工作

但我不能使用Console.ReadLine()或Scanner之类的工具。我必须通过控制台本身输入数据。因此,当我调用它时,我会在控制台中键入:

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带来的乐趣。:)