如何使用for循环输入10个数字并仅打印正数?

时间:2015-04-16 01:04:06

标签: java

我正在尝试制作一个“for”循环,要求用户输入10个数字,然后只打印正数。

无法控制输入量。在我添加负数之前,我一直在获得无限输入。

import java.util.Scanner;

public class ej1 {
    public static void main(String args[]) {

        int x;

        for (x = 1; x >= 0; ) {
            Scanner input = new Scanner(System.in);
            System.out.print("Type a number: ");
            x = input.nextInt();
        }
    }
}

2 个答案:

答案 0 :(得分:5)

从语法的角度来看,您对此代码有几个问题。

  • 语句for (x = 1; x >= 0; )将始终循环,因为x将始终大于0,特别是因为您没有引入任何一种减少{{1}的条件}}

  • 您一遍又一遍地重新启动扫描仪。你应该只在循环之外声明一次。您可以根据需要多次重复使用它。

  • 您希望使用nextLine() after nextInt()来避免扫描程序出现一些奇怪的问题。

    或者,您可以使用x并使用nextLine()解析该行。

也就是说,有几种方法可以控制它。使用Integer.parseInt循环是一种方法,但是如果你想确保只打印出10个正数而不管输入了多少个负数,事情就会变得挑剔。有了这个,我建议改为使用for循环:

while

如果您需要输入十个值,请将增量语句移到int i = 0; Scanner scanner = new Scanner(System.in); while(i < 10) { System.out.print("Enter a value: "); int value = scanner.nextInt(); scanner.nextLine(); if (value > 0) { System.out.println("\nPositive value: " + value); i++; } } 语句之外。

if

作为提示:如果您想存储正值以供以后参考,那么您必须使用某种数据结构来保存它们 - 就像数组一样。

i++;
if (value > 0) {
    System.out.println("\nPositive value: " + value);
}

如果读入的值为正数,您只会为此特定数组添加值,并且您可以在最后一次打印它们:

int[] positiveValues = new int[10];

...或循环:

// at the top, import java.util.Arrays
System.out.println(Arrays.toString(positiveValues));

答案 1 :(得分:0)

Scanner scan = new Scanner(System.in);
int input=-1;
for(int i=0;i<10;i++)
{
 input = sc.nextInt();
if(input>0)
System.out.println(input);
}