Java 使用数组,如何存储和显示唯一的数字?
您好,堆栈溢出,我现在正在学习编程类中的数组,它现在对我来说变得非常混乱,我似乎无法为它编写正确的代码。我已经成功地完成了大部分工作,但我似乎无法在第25行获得if语句的正确代码,并且在第12行得到了一个找不到的符号。程序的输出应在用户输入后显示数字,并继续一个小列表,让用户知道他们是否已经输入了相同的数字。输出将类似于以下内容:Java 使用数组,如何存储和显示唯一的数字?,java,arrays,unique,Java,Arrays,Unique,您好,堆栈溢出,我现在正在学习编程类中的数组,它现在对我来说变得非常混乱,我似乎无法为它编写正确的代码。我已经成功地完成了大部分工作,但我似乎无法在第25行获得if语句的正确代码,并且在第12行得到了一个找不到的符号。程序的输出应在用户输入后显示数字,并继续一个小列表,让用户知道他们是否已经输入了相同的数字。输出将类似于以下内容: Enter number: 11 11 Enter number: 85 11 85 Enter number: 26 11 85 26 Enter number:
Enter number: 11
11
Enter number: 85
11 85
Enter number: 26
11 85 26
Enter number: 11
11 has already been entered
11 85 26
以下是我迄今为止的代码:
import java.util.Scanner;
public class Unique
{
public void getNumbers()
{
Scanner input = new Scanner(System.in);
int[] numbers = new int [5];
int count = 0; // unique numbers read
int entered = 0; // entered numbers
while( entered < numbers.length)
{
System.out.print("Enter number: ");
int number = input.nextInt();
if (number >= 10 && number <= 100)
{
boolean containsNumber = false;
entered++;
for (int a = 0; a < array.length; a++)
numbers[a]=number;
if (!containsNumber)
{
count++;
}
else
System.out.printf("%d has already been entered\n", number);
}
else
System.out.println("number must be between 10 and 100");
System.out.printf("%d\n",number);
for(int value:numbers)
System.out.printf(" %d\n", value);
}
}
}
import java.util.Scanner;
公共类唯一
{
公共编号()
{
扫描仪输入=新扫描仪(System.in);
int[]数字=新的int[5];
int count=0;//读取唯一数字
int entered=0;//输入的数字
while(输入=10&&number你很接近,非常接近。你的for循环几乎完成了,你只需要在它里面放一个if。由此:
for (int a = 0; a < array.length; a++)
numbers[a]=number;
for(int a=0;a
对这样的事情:
for (int a = 0; a < array.length; a++)
{
if (array[a] == number)
{
containsNumber = true;
break; //This exits the for loop, so you don't continue unneedlessly
}
}
for(int a=0;a
然后,增加计数的if语句将起作用,您只需更改该语句即可将数字添加到数组中
for (int a = 0; a < array.length; a++)
numbers[a]=number;
若还并没有输入用户的输入,那个么你们应该附加用户的输入。然后,你们应该这样做
if (!containsNumber)
{
numbers[count] = number;
count++;
}
另外,输入的
变量是不需要的,数字
的大小是计数
,不是吗
while (count < numbers.length)
{
...
虽然number.length
始终为5,但数字的实际内容大小是count
。因此,我们应该这样做
for (int i = 0; i < count; i++)
{
System.out.printf(" %d\n", numbers[i]);
}
因此,代码应该是
import java.util.Scanner;
class Unique
{
public void getNumbers()
{
Scanner input = new Scanner(System.in);
int[] numbers = new int [5];
int count = 0; // unique numbers read
while (count < numbers.length)
{
System.out.print("Enter number: ");
int number = input.nextInt();
if (number >= 10 && number <= 100)
{
boolean containsNumber = false;
for (int a = 0; a < numbers.length; a++)
{
if (numbers[a] == number)
{
containsNumber = true;
break;
}
}
if (!containsNumber)
{
numbers[count] = number;
count++;
System.out.printf("%d\n",number);
}
else
{
System.out.printf("%d has already been entered\n", number);
}
}
else
{
System.out.println("number must be between 10 and 100");
}
for (int i = 0; i < count; i++)
{
System.out.printf(" %d\n", numbers[i]);
}
}
}
}
import java.util.Scanner;
类唯一
{
公共编号()
{
扫描仪输入=新扫描仪(System.in);
int[]数字=新的int[5];
int count=0;//读取唯一数字
while(计数<数字.长度)
{
系统输出打印(“输入编号:”);
int number=input.nextInt();
如果(number>=10&&number您得到的输出是什么?您应该将其添加到您的问题中,以便我们可以比较预期输出与实际输出。我看到的第一件事是containsNumber
将始终为false,因为您的代码中没有任何位置可以更改它。第二件事是,当用户输入一个数字时,您将数组中的每个位置都设置为该数字数字。我看到的最后一件事是,你输入了的
,但我从来没有看到你生成变量numbers
。我想你的意思是数组。length
。我看到的第一件事是你的for循环使数组中的每个数字都是相同的。很幸运的是,我的代码没有像它显示的那样编译,因为我在我的内部停留了一段时间d if语句。我也可以告诉你们没有人读过我在开头所说的内容。我是java新手。我知道我的代码还没有完成,也不会给我想要的输出。我只是请求帮助,而不是因为我已经知道的错误而被批评。为了帮助你们,我必须指出错误。我并不想批评你们。如果你们知道的话什么是错误的,你可以尝试去做那些事情。这就是我正在寻找的帮助。我知道我很接近,我只是不知道如何实现代码,因为我上周学习了数组。这就是为什么我遇到这个问题。我很抱歉,如果我的代码是混乱的,这就是为什么我在学习java的中间。谢谢。非常感谢您的帮助。当我尝试实现user3189142建议的功能时,我的输出出现了问题,并尝试自己修复。现在我需要保存此功能,以便在再次出现相同错误时可以依靠它。
for (int i = 0; i < count; i++)
{
System.out.printf(" %d\n", numbers[i]);
}
if (!containsNumber)
{
numbers[count] = number;
count++;
// here
System.out.printf("%d\n",number);
}
import java.util.Scanner;
class Unique
{
public void getNumbers()
{
Scanner input = new Scanner(System.in);
int[] numbers = new int [5];
int count = 0; // unique numbers read
while (count < numbers.length)
{
System.out.print("Enter number: ");
int number = input.nextInt();
if (number >= 10 && number <= 100)
{
boolean containsNumber = false;
for (int a = 0; a < numbers.length; a++)
{
if (numbers[a] == number)
{
containsNumber = true;
break;
}
}
if (!containsNumber)
{
numbers[count] = number;
count++;
System.out.printf("%d\n",number);
}
else
{
System.out.printf("%d has already been entered\n", number);
}
}
else
{
System.out.println("number must be between 10 and 100");
}
for (int i = 0; i < count; i++)
{
System.out.printf(" %d\n", numbers[i]);
}
}
}
}