我一直在寻找答案,而且我总能找到部分回答我问题的事情。所以,这是我现在的代码:
import java.util.Scanner;
public class VelikaDN {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter numbers: ");
int[] array = new int[100];
for (int i = 0; i < array.length; i++) {
array[i] = input.nextInt();
// Number of elements
int counter = 0;
for (int j = 0; j < array.length; j++) {
if (array[j] != 0)
counter++;
}
System.out.println("This array has " + counter + " numbers.");
}
}
}
它有效,但最后我发现了一些不像我想象的那么轻微的东西。这是输出:http://i.imgur.com/3mmEpUb.png 我试图重新定位整个代码的打印,试图以某种方式停止循环但我失败了。我真的不确定是什么问题了。我试图解决这个问题并做另一项任务,但正如我已经说过的那样,循环之外的任何事情都没有出现。
如果这令人困惑,我很抱歉,我是Java新手,我也很难解释。如果您有一些提示或替代解决方案,请随意将其丢入此处。如果还有其他我需要解释的话,那就这么说吧。
答案 0 :(得分:1)
将int counter=0;
放在循环之外,然后在循环之后发布system.out
答案 1 :(得分:0)
我没有看到使用2个嵌套for循环(或2个独立循环)的意义,它只是使算法复杂度为O(n ^ 2) 您可以检查第一个循环中的值是否为0,以及它是否不会增加计数器的值
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter numbers: ");
int[] array = new int[2];
int counter = 0;
for (int i = 0; i < array.length; i++) {
array[i] = input.nextInt();
if(array[i] != 0) {
counter++;
}
}
System.out.println("This array has " + counter + " numbers.");
}
修改强>
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter numbers: ");
int[] array = new int[100];
int i = 0;
for (; i < array.length; i++) {
int inputValue = input.nextInt();
if(inputValue <= 0) {
break;
} else {
array[i] = inputValue;
}
}
System.out.println("This array has " + i + " numbers.");
}
编辑2(Credit @Andreas)
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter numbers: ");
int[] array = new int[100];
int i = 0;
while (input.hasNextInt()) {
int inputValue = input.nextInt();
array[i++] = inputValue;
}
System.out.println("This array has " + i + " numbers.");
}