Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.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 理解这项任务';求和';_Java_Sum - Fatal编程技术网

Java 理解这项任务';求和';

Java 理解这项任务';求和';,java,sum,Java,Sum,我很难理解这项任务要求我做什么。我是一个绝对的初学者,通常需要学习几周的Java/编程,这对我来说非常困难。因此,我为标题中的不具体表示歉意 如果有人能给我解释一下,我会非常感激,也许可以举一个例子(我不是要求别人帮我做这项任务,我只是觉得这样更容易理解),这样我就可以知道该做什么了 多谢各位 求和规范: 此程序从命令行获取输入 The first input is K, an integer, followed by an arbitrary number a_1, ..., a_N of f

我很难理解这项任务要求我做什么。我是一个绝对的初学者,通常需要学习几周的Java/编程,这对我来说非常困难。因此,我为标题中的不具体表示歉意

如果有人能给我解释一下,我会非常感激,也许可以举一个例子(我不是要求别人帮我做这项任务,我只是觉得这样更容易理解),这样我就可以知道该做什么了

多谢各位

求和规范:

此程序从命令行获取输入

The first input is K, an integer, followed by an arbitrary number a_1, ..., a_N of floating-point numbers.

If K=0, then N is output.

If K > 0, then the a_i are grouped in groups of size K, inside the groups the numbers are multiplied, and all the products are added, yielding the output.
If K < 0, then the summation sums up the reciprocal values of the products.
In the special case K=1 the output thus is a_1 + ... + a_N.
In the case K=-1 the output is 1/a_1 + ... + 1/a_N.

There are two error cases:
If no command-line argument is given, then error-code 1 is to be returned.
If K < 0, and one of a_i = 0, then error-code 2 is to be returned.
In both cases there must be no output.
The return-code of a program is set via System.exit(code);
第一个输入是K,一个整数,后面是一个任意数a_1,…,一个浮点数。
如果K=0,则输出N。
如果K>0,则a_i被分组为大小为K的组,组内的数字相乘,所有乘积相加,得到输出。
如果K<0,则求和将乘积的倒数相加。
在特殊情况下K=1,因此输出为_1+…+a\N。
在K=-1的情况下,输出为1/a_1+…+1/a\N。
有两种错误情况:
如果没有给出命令行参数,则返回错误代码1。
如果K<0,且其中一个a_i=0,则返回错误代码2。
在这两种情况下都必须没有输出。
通过System.exit(代码)设置程序的返回代码;
请注意,程序的返回代码是在命令行上通过echo$?。 决不能有任何其他输出。此外,不允许使用额外的空格或换行符


以下是无错误情况下的示例:

您可以在此处找到命令行参数:

public static void main(String args[]) {
                            // ^ these are the command line arguments
所以为了得到K

int K = Integer.parseInt(args[0]);
但实际上你不应该这样写,因为这是Java,Java变量应该以小写字母开头

int k = Integer.parseInt(args[0]);
首先,我们来处理k=0的情况。我们必须测试k是否为0:

if(k == 0) {
如果是,那么N是附加参数的数量,也就是

  int numberOfAdditionalArguments = args.length - 1;
然后我们把它打印出来(就像上面说的那样,之后没有换行!)

然后我们关闭}块

}

我认为这就足够让您开始了。

您应该编写一个控制台应用程序,从中获取输入并执行许多Java语句。程序完成后,它会将退出代码返回控制台。公平地说,在我看来,规范编写得相当糟糕。不管怎样,您只需要编写一些if/else语句(如
if(K>0)
)即可执行他们希望您执行的任何计算,然后使用
System.out.println
将其打印到控制台上。这个问题更合适,因为伪代码实际上一步一步地描述程序的逻辑。主要的挑战是理解每个句子(或程序的组件,如变量K)并用java语法忠实地实现它。谢谢!我现在明白了。现在是最难的部分。。。如何将输入分组为K组?那么。。示例输入:3 1 2 3 4 5 6 7 8解决方案:(1*2*3)+(4*5*6)+(7*8)正确方向上的一点将非常有用!为此,您需要将
args
1
循环到
args.length-1
。您可以使用两个循环(其中一个嵌套在另一个循环中)或使用一个单循环和一个计数器来执行此操作。选择对你最有意义的方式。
}