3

我正在尝试从以下输入实现以下输出:

Sample input:
3 4
2 1
4 5
-1

Sample output:
7
3
9

到目前为止,我的程序完成了所有的数学运算,当用户输入负数时,我让它终止。我的问题是我无法让它以上述格式打印。我的输入/输出示例如下:

9 9
8 8
9 -8
[18, 16]

到目前为止,这是我的代码:

import java.util.ArrayList;
import java.util.Scanner;
    public class sums{
     public static void main(String[]args){
         int addition = 0;
         int previous = 0;
         ArrayList<String> sums = new ArrayList<String>();
         String sumsy = new String("");
         for (int i=0; i<=i;){
             Scanner in = new Scanner(System.in);
             previous = in.nextInt();
             if (previous<0){
                 break;
             }
             else {
                 addition = in.nextInt();
                 if (addition<0) {
                     break;
                 }
                 else {
                     addition += previous;
                     sums.add(addition+"");
                 }
             }
         } System.out.println(sums);
     }
}

我相信答案在于以某种方式在某处使用分隔符(“/n”),并让我的整数数组像字符串一样打印出来。

对不起,这些小事完全让我望而却步。谁能指出我正确的方向?

谢谢!-海伦

4

4 回答 4

3
for (String sum : sums) System.out.println(sum)

用这个代替

System.out.println(sums)
于 2012-09-20T20:40:50.303 回答
1

System.out是一个PrintStream对象,它的println方法针对各种不同的类型进行了重载。

在这种情况下,因为 sums 是一个ArrayList,所以您正在调用println(Object x),它通过调用String.valueOf(x)传递的对象(反过来调用x.toString()ifx不等于null)并打印结果来工作String

本质上,当您将除 aString或原语之外的其他内容传递给 时println,您就是将其打印方式的详细信息委托给对象的类。在这种情况下,由于ArrayList是一个库类,因此您无法控制它。

为了使其按您想要的方式工作,您需要迭代总和中的值,例如:

for (String someSum : sums) {
    System.out.println(someSum);
}

如果您不熟悉该循环语法,请参阅本页的后半部分:http: //docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html

于 2012-09-20T23:24:46.683 回答
0

sums 是字符串列表,而不是字符串,因此打印它不会给您想要的东西。你有两个选择,你可以做 for(String i : sums){ System.out.println(i); }

或者你可以计算一个字符串生成器然后sums.append(addition) System.out.println(sums.toString())

于 2012-09-20T20:47:12.000 回答
0

你真的必须使用 ArrayList 吗?IMO,这使它变得比必要的复杂得多。从您的示例输入中,您似乎只想对每对数字求和。这似乎不需要数组。您可以将两个数字相加并立即打印出结果。

于 2012-09-20T20:48:40.387 回答