将一组int更改为一系列字符串

时间:2012-09-20 20:38:17

标签: java

我正在尝试从以下输入中获得以下输出:

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”)某处,并使我的整数数组以字符串形式打印出来。

对不起,这些小事完全逃避了。有人能指出我正确的方向吗?

谢谢! -Helen

4 个答案:

答案 0 :(得分:3)

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

使用此代替

System.out.println(sums)

答案 1 :(得分:1)

System.outPrintStream个对象,其println个方法因各种不同类型而被重载。

在这种情况下,因为总和是ArrayList,所以您正在调用println(Object x),它通过调用传递的对象上的String.valueOf(x)来工作(后者又调用x.toString()如果x不等于null),则打印生成的String

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

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

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

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

答案 2 :(得分:0)

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

或者您可以将字符串作为字符串构建器并执行sums.append(addition)然后 System.out.println(sums.toString())

答案 3 :(得分:0)

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