我正在尝试从以下输入中获得以下输出:
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
答案 0 :(得分:3)
for (String sum : sums) System.out.println(sum)
使用此代替
System.out.println(sums)
答案 1 :(得分:1)
System.out
是PrintStream
个对象,其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,这使得它比必要的复杂得多。从您的示例输入中,您似乎只想对每对数字求和。这似乎不需要数组。你可以将两个数字加在一起,然后立即打印出结果。