我在这里不知所措。
我有这个家庭作业,我必须让用户输入10个数字,将它们放在一个数组中,并找出哪些输入的数字是唯一的。
这是我现在的工作流程:输入数字>如果之前没有输入数字,则存储在数组中;如果之前输入了数字,请忽略>显示输入的数字>显示唯一编号
例如:输入1 2 3 5 1 2 4 6会找到唯一的数字并显示“1 2 3 4 5 6”
到目前为止,我的代码看起来像这样:
public class HwChapter6 {
public static void main(String[] args) {
java.util.Scanner input = new java.util.Scanner(System.in);
int[] count = new int[10];
int number = 0;
int x = 0;
boolean unique = false;
int length = count.length;
System.out.println("Insert 10 single digit numbers in any order your heart desires:");
for (int i = 0; i < count.length; i++) {
count[i] = input.nextInt();
number = count[i];
for (int j = 0; j < count.length; j++) {
感谢帮助人员。
答案 0 :(得分:2)
而不是输入值数组,将它们放在Set
Integers
中。根据定义,设置仅存储唯一值。如果添加3'foos',则集合中只有一个'foo'。
// Add this to your top-level loop
Set<Integer> uniqueValues = new TreeSet<Integer>;
uniqueValues.add(number);
// Add this after the loop to write all unique values on one line
for (Integer value : uniqueValues) {
System.out.print(value.toString() + " ");
}
// Now end the line.
System.out.println();
答案 1 :(得分:1)
将所有数字存储在数组中。 对于每个存储的数字:检查之前是否插入了数字并将其保存在布尔数组中。 打印所有未在布尔数组中标记的数字。
java.util.Scanner input = new java.util.Scanner(System.in);
int[] numbers = new int[10];
boolean[] usedBefore = new boolean[10];
// Insert all numbers
for (int i = 0; i < numbers.length; i++) {
// Read number from console
numbers[i] = input.nextInt();
// Check if number was inserted before
usedBefore[i] = false;
for(int k = 0; k < i; k++) {
if(numbers[k] == numbers[i]) {
usedBefore[i] = true;
break;
}
}
}
// Print all numbers that were not inserted before
for(int j = 0; j < numbers.length; j++) {
if(!usedBefore[i]) {
System.out.print(String.valueOf(numbers[j])+" ");
}
}
答案 2 :(得分:1)
检查输入的数字,然后通过在{(1}}的第二个(布尔)数组中标记相同的位置(如果它们是唯一的)来跟踪哪些是唯一的,否则true
。 / p>
然后,当您打印出唯一值时,如果false
中的该位置包含numbers[]
,则只打印uniques[]
中每个位置的值。
true
答案 3 :(得分:0)
最快,最简洁,最有效的方法是在完成所有其他操作后,使用第一个数字作为魔术值破坏性地解析数组的唯一值:
Scanner input = new Scanner(System.in);
int magic = 0;
int[] numbers = new int[10];
for(int i = 0; i < 10; i++) {
System.out.println("Please enter a value: \n" + "[" + (i + 1) + "]: ");
numbers[i] = input.nextInt();
}
System.out.println("\nThe numbers you entered were: \n");
for(int i = 0; i < 10; i++) {
System.out.println(numbers[i] + ", ");
}
System.out.println("done.\n\n");
System.out.println("The unique numbers are: ");
magic = numbers[0];
System.out.println(magic + ", ");
for(int i = 0; i < 10; i++) {
for(int j = 0; j < 10; j++) {
if(numbers[i] == numbers[j] && j != i) {
numbers[j] = magic;
}
}
if(numbers[i] != magic) {
System.out.println(numbers[i] + ", ");
}
}
System.out.println("done.\n\n");
是的,我有两个答案 - 这个答案与另一个答案明显不同,并且更好,尽管初学者理解起来要困难得多。但是,这两种解决方案都是有效的。