gpt4 book ai didi

java - 检查用户输入的数字是否重复

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:07:38 25 4
gpt4 key购买 nike

我正在做一个程序,用户输入五个数字,最后打印出这些数字,效果很好。我无法开始工作的是用于检查重复项的 boolean 函数。它应该在用户写入时检查重复项,例如如果第一个是 5,第二个也是 5,你应该会得到一个错误,直到你输入一个不同的数字。这意味着如果用户输入重复,则不应将其保存在数组中。这显然是一项作业,所以我只是要求一两个提示。

这个程序是根据给我的伪代码编写的,因此我必须使用一个 boolean 值来检查 public boolean duplicate( int number ) 类的重复项。

我已经尝试着解决这个问题并自己尝试了一些东西,但显然我犯了一个愚蠢的错误。例如:

if(int i != myNumbers[i]) 
checkDuplicates = false
else
checkDuplicates = true;

return checkDuplicates;

重复测试类:

public class DuplicatesTest {

public final static int AMOUNT = 5;

public static void main(String[] args) {

Duplicates d = new Duplicates(AMOUNT);
d.inputNumber();
d.duplicate(AMOUNT);
d.printInputNumbers();
}
}

重复类:

public class Duplicates {

private int amount;
private int[] myNumbers;
private boolean checkDuplicates;

public Duplicates(int a) {

amount = a;
myNumbers = new int[amount];
}

public void inputNumber() {

for(int i = 0; i < amount; i++ ) {
int input = Integer.parseInt(JOptionPane.showInputDialog("Input 5 numbers"));
myNumbers[i] = input;
}
}

public boolean duplicate( int number ) {

<BOOLEAN TO CHECK FOR DUPLICATES, RETURN FALSE OR TRUE>

}

public void printInputNumbers() {

JTextArea output = new JTextArea();
output.setText("Your numbers are:" + "\n");

for(int i = 0; i < myNumbers.length; i++) {
if (i % 5 == 0) {
output.append("\n");
}
output.append(myNumbers[i] + "\t");
}
JOptionPane.showMessageDialog(null, output, "Numbers", JOptionPane.PLAIN_MESSAGE);
}
}

抱歉,如果代码标签很乱,我在中间的白色字段等方面遇到了一些麻烦。我是新来的。

最佳答案

不要将数字存储在数组 中。使用 Set<Integer>反而。然后做一个 Set#contains()手术。这是O(1)这实际上比遍历数组以搜索重复项要好得多。

好的,如果强制使用数组,那么您应该修改当前的方法,返回 true一旦找到重复项,而不是再次遍历数组。在您当前的方法中,因为您正在设置 boolean变量为 falseelse block ,你的方法将返回 false如果数组的最后一个元素与您正在检查的内容不同。因此,只需将您的方法修改为:

// loop over the array
if (number == myNumbers[i])
return true;
// outside the loop, if you reach, return false
return false;

请注意,您当前的 if语句不会编译。您正在声明 int那里有变量,这是你做不到的。

if (int i == myNumbers[i])   // this is not a valid Java code.

关于java - 检查用户输入的数字是否重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19210386/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com