2011-12-12 120 views
2

我是新来的java,我试图要求用户输入,但我不希望用户能够输入两次相同的数字。以下是我试图用户输入,不允许相同的输入两次

  g1 = iBox.getInteger("Enter your 1st number"); 
      g2 = iBox.getInteger("Enter your 2nd number"); 
       if(g1 == g2){ 
        g2 =iBox.getInteger("Number used, please re-enter"); 
       } 
      g3 = iBox.getInteger("Enter your 3rd number"); 
       if(g3 == g1){ 
        g3 =iBox.getInteger("Number used, please re-enter"); 
       } 
       else if(g3 == g2){ 
        g3 =iBox.getInteger("Number used, please re-enter"); 
       } 
      g4 = iBox.getInteger("Enter your 4th number"); 
       if(g4 == g1){ 
        g4 =iBox.getInteger("Number used, please re-enter"); 
       } 
       else if(g4 == g2){ 
        g4 =iBox.getInteger("Number used, please re-enter"); 
       } 
       else if(g4 == g3){ 
        g4 =iBox.getInteger("Number used, please re-enter"); 
       } 
      oBox.print(" " + g1 + " " + g2 + " " + g3 + " " + g4 + " "); 
+1

你有什么问题吗? – chance

+0

这里没有问题。 “iBox”是什么类型? –

+0

我们可以获得更多信息吗?抛出什么异常(如果有的话)?想必你正在经历意想不到的行为。你能详细说明这种行为吗?我很乐意提供帮助;我只需要知道什么不适用于您的代码(因为乍一看,它看起来不错) –

回答

1
  • 拿一个ArrayList
  • 扫描从用户的价值,分析,验证添加到ArrayList
  • 做来检查它是否在list
  • 已经存在
1

我建议您将以前的输入存储在List或某种集合中。然后,您可以使用.contains(Object o)方法查看该集合是否已包含特定值。

这将允许您扩展您的应用程序超出固定数量的输入。

Collection API

3

你应该使用循环和一组。 Pseudocode:

let S be the set of used numbers(or array, if order is important) 
clear contents of S 
for I = 1 to N, where N is the number of numbers you want to get 
    int g = iBox.getInteger("Enter Ith number"); 
    while(S.contains(g)) 
     g = iBox.getInteger("Number used, please re-enter"); 
    Add g into S. 
相关问题