读取10个数字并显示它们,不重复

时间:2016-09-27 04:07:58

标签: java arrays for-loop

我要创建一个程序,从用户输入接受10个数字,并且只显示一个数字。例如,如果用户输入数字:1,2,3,3,4,5,6,7,8,9,即使用户输入两次,代码也只会显示一次数字。

在我的教科书和本网站上的论坛中搜索到类似的问题后,我遇到了cannot find the symbol i错误的问题。

import java.util.Scanner;

public class ArrayWith10Numbers {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        int[] myArray = new int[10];

        System.out.print("Enter " + myArray.length + " values: ");

        for (int i = 0; i < 10; i++); {
            myArray[i] = input.nextInt();
        }

        for(int n = 0; n < 10; n++)
        {
            System.out.print("myArray["+ (n+1) +"] is : "+ myArray[n]);
        }
    }
}

如果我的代码存在任何其他问题,请告知我们。我是初学者,但我会尽力学习和提高。谢谢。

5 个答案:

答案 0 :(得分:2)

声明结尾处有分号。请删除它。

for (int i = 0; i < 10; i++);

这是固定程序

import java.util.*;

public class ArrayWith10Numbers {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int[] myArray = new int[10];

        System.out.print("Enter " + myArray.length + " values: ");

        for (int i = 0; i < myArray.length; i++) {
            myArray[i] = input.nextInt();
        }

        Set<Integer> set = new HashSet<>();

        for (int i = 0; i < myArray.length; i++) {
            if (!set.contains(myArray[i])) {
                System.out.println("myArray[" + i + "] is: " + myArray[i]);
                set.add(myArray[i]);
            }
        }
    }
}

这是另一个不将输入存储到数组中的程序。

import java.util.*;

public class ArrayWith10Numbers {

    public static void main(String[] args) {
        final int TOTAL_NUMBERS = 10;
        System.out.print("Enter " + TOTAL_NUMBERS + " values: ");

        Scanner input = new Scanner(System.in);
        Set<Integer> set = new TreeSet<>();

        for (int i = 0; i < TOTAL_NUMBERS; i++) {
            set.add(input.nextInt());
        }

        StringBuilder sb = new StringBuilder();     
        for (int n : set) {
            sb.append(n).append(' ');
        }

        System.out.println("Numbers without duplicates: " + sb);
    }
}

数字将按升序打印。如果您希望以与输入相同的顺序显示数字,请将TreeSet替换为LinkedHashSet,如同在dumb_terminal的答案中一样。

答案 1 :(得分:1)

使用LinkedHashSet消除重复项。

public static void main(String [] args){
        Scanner input = new Scanner(System.in);
        LinkedHashSet<Integer> set = new LinkedHashSet<>();
        for (int i = 0 ; i < 10 ; i++){
            set.add(input.nextInt());
        }

        Iterator<Integer> ii = set.iterator();
        while(ii.hasNext())
            System.out.println(ii.next());
    }

答案 2 :(得分:0)

替换你的for循环
<tr class="<?= (!($_POST["goalsa"] > $_POST["goalsh"])) ? 'green' : (($_POST["goalsa"] > $_POST["goalsh"])? 'red' : '') ?>" />

答案 3 :(得分:0)

有一个';'在“for”语句的末尾,“for”语句有空体,下面的代码与“for”语句没有关系。

{
  myArray[i] = input.nextInt();
}

正确的代码是:

for (int i = 0; i < 10; i++)
{
   myArray[i] = input.nextInt();
}

您可以使用某些Java IDE,如IntelliJ IDEA,它可以帮助您检查代码并提供提示。

例如:

这将有助于解决将来的类似问题。

答案 4 :(得分:0)

您可以删除第一个for循环中的分号以修复无法找到符号i 问题,使用set 删除重复项,如下所示

for (int i = 0; i < word.length(); i++) {
        String currentLetter = String.valueOf(word.charAt(i));
        if (!currentLetter.matches("a|e|i|o|u"))
            System.out.print(currentLetter);
    }