我在命令行输入五个或更多变量并从中创建一个数组。我然后添加了这些值,但我不确定它为什么不起作用。
我的代码是:
public static void main(String args[]) {
int t = args.length;
int[] u;
u = new int[t];
int v = 0;
for (int i=0; i<t; i++) {
u[i]= Integer.parseInt(args[i]);
for (int j=0; j<t; j++) {
v = v + u[i];
System.out.println(v);
}
}
}
但是,如果我输入5个,则输出25。
我不确定我哪里出错了,我们将非常感谢任何帮助。
注意:我的任务要求我不使用库函数。
答案 0 :(得分:1)
1)你在另一个for
循环中有一个for
循环导致了麻烦。
2)还要注意你的变量命名 - &gt;使用表达/描述其目的的变量名称。变量名t
不太具描述性。
3)此外,无需创建额外的变量/数组。只需循环输入并将它们添加到总和中。
public static void main(String args[]) {
int sum = 0;
for (int i=0; i<args.length; i++) {
sum += Integer.parseInt(args[i]);
}
System.out.println(sum);
}
4)感谢Java 8,你可以做一个(有点复杂的)一个班轮:
public static void main(String args[]) {
System.out.println(Arrays.stream(myarray).mapToInt(Integer::parseInt).sum());
}
Arrays.stream(args)
)mapToInt(Integer::parseInt)
)sum()
答案 1 :(得分:0)
你的内部循环没有任何意义,似乎是你问题的原因。实际上你正在进行t * t
循环,在你的情况下是5 * 5
,这就是为什么你根据所有1的输入得到25的结果。
您只需要一次循环输入数组,如下所示:
public static void main(String args[]) {
int t = args.length;
int[] u;
u = new int[t];
int v = 0;
for (int i=0; i<t; i++) {
u[i]= Integer.parseInt(args[i]);
v = v + u[i];
}
System.out.println(v);
}
另一方面,没有理由实际存储一个int数组,除非你打算稍后再使用它。根据这一特定要求,最好这样写:
public static void main(String args[]) {
int length = args.length;
int total = 0;
for (int i = 0; i < length; i++) {
int number = Integer.parseInt(args[i]);
total += number;
}
System.out.println(total);
}