【问题标题】:Java programming, arrays in functionsJava编程,函数中的数组
【发布时间】:2017-02-16 10:00:05
【问题描述】:

所以基本上我在编程中遇到了一种情况,我需要让程序查看数组的一部分是否等于数组的任何其他部分。

例如,如果我有一个名为 array[5] 的数组,并且我需要查看 array[0] 是否等于数组的任何其他部分,我该怎么做?当然假设我从用户那里得到输入,我必须看看用户是否输入了相同的数字。

这是我现实生活中的例子,我遇到的这个问题发生在 isUnique 方法中:

import java.util.Scanner;

public class Week06_NelsonPimentel_Assignment {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int[] validnum;
        int i = 0;
        validnum = new int[5];
        boolean isvalid;
        boolean isunique;

        System.out.println("Please enter a number between 50 and 100");

        while (i < validnum.length) {
            validnum[i] = input.nextInt();

            if (validnum[i] <= 101 && validnum[i] >= 49) {
                isvalid = isValid(validnum[i]);
                if (i > 0) {
                    isunique = isUnique(validnum[i], validnum[i]);
                }
                i++;
            } else {
                System.out.println("Invalid number***");
            }
        }
    }

    static boolean isValid(int a) {
        boolean b = true;
        System.out.println("valid");
        return b;
    }

    static boolean isUnique(int a, int b) {
        boolean yes;
        int i;
        if (a == b) {
            System.out.println("This is not a unique number");
            yes = false;
        }
        else {
            System.out.println("This is a unique number!");
            yes = true;
        }
        return yes;
    }
}

【问题讨论】:

  • isunique = isUnique(validnum[i], validnum[i]); 将导致 isunique 始终为true
  • 嗯,您的代码令人困惑,由于某种原因,isValid 总是返回 true
  • 所以我将 isUnique(validnum[i], validnum[i]) 切换为 isUnique(validnum[i], validnum),这是否会使 validnum 引用所有值,而不仅仅是一个?

标签: java arrays loops


【解决方案1】:

您必须遍历数组中的每个元素并将当前元素与新元素进行比较:

if (i > 0) {
    isunique = true;
    for(int j = 0; j < i; j++) {
        if (validnum[i] == validnum[j]) {
            isunique = false;
            System.out.println(validnum[i] + " is not an unique number");
            break;
        }
    }
    if(isunique == true) {
        System.out.println(validnum[i] + " is an unique number");
    }
}
i++;

【讨论】:

  • 不幸的是,我的教授希望提交的这个程序的方式不符合这种格式,但是你的回复给了我一个非常好的想法,我认为应该工作,或多或少我会实施你刚刚教的我,但在某种程度上,谢谢你的回应!
  • 是的,这几乎是正确的方法。但他已经为数组分配了新值。所以你总能找到匹配的!
  • @DiabolicWords 不完全,请查看:j &lt; i
猜你喜欢
  • 2018-07-01
  • 2010-11-19
  • 2017-08-21
  • 1970-01-01
  • 1970-01-01
  • 2020-10-02
  • 1970-01-01
  • 2013-08-08
  • 1970-01-01
相关资源
最近更新 更多