如何获取单个true或false,而不是获取数组中每个值的true或false

时间:2016-12-18 19:31:50

标签: java arrays

import java.util.Scanner;

public class hil {
    public static void main(String[] args){
        Scanner m = new Scanner(System.in);

        System.out.print("Insert a number:");
        int num = m.nextInt();

        int[] ar = { 10, 20, 30, 40, 50 };
        int sum = 0;

        for (int i = 0; i < ar.length; i++) {
            sum += i;

            for (int n : ar) {
                if (num == n) {
                    System.out.print(true);
                } else {
                    System.out.print(false); 
                }
            }
        }   
    }
}

这是我的代码 我得到正确的输出,但它对数组中的所有值显示true和false。不仅是单一的价值。如何获取输入值的true和false布尔值,而不是值的其余部分。

当前输出:

  

插入一个数字:20
  falsetruefalsefalsefalsefalsetruefalsefalsefalsefalsetruefalsefalsefalsefalsetruefalsefalsefalsefalsetruefalsefalsefalse

期望的输出:

  

插入一个数字:20
     真

5 个答案:

答案 0 :(得分:1)

我相信你正在寻找脏位模式。

import java.util.Scanner;

public class hil {
    public static void main(String[] args){
        Scanner m = new Scanner(System.in);

        System.out.print("Insert a number:");
        int num = m.nextInt();

        int[] ar = { 10, 20, 30, 40, 50 };

        Boolean found = false;

        for (int n : ar) {
            if (num == n) {
                found = true;
                break;
        }   

        System.out.print(found);
    }
}

我们的想法是将位(在这种情况下为布尔值)初始化为“清理”。然后给它一个机会弄脏&#39;。一旦弄脏了&#39;它保持“肮脏”。无论您是否考虑清洁&#39;是真还是假。

这里的逻辑与&#39;或所有这些相等比较相同。

添加break仅仅是微优化。没有它,逻辑就是一样的。添加它只会使它更快一点。也许。

答案 1 :(得分:0)

假设您只是想检查用户提供的号码是否在该阵列中;那么你必须检查一下;并记住这个决定:

boolean numberFound = false;
for (int numberFromArray : nums) {
  if (numberFromArray == num) {
    numberFound = true;
  }
}

然后在循环之后...打印布尔值。一次。

答案 2 :(得分:0)

只需在循环外部存储一个布尔值,然后打印出来。

boolean inArray = False;
for(int n: ar){
    if (num == n){
        inArray = True;
    }
}
System.out.print(inArray);

答案 3 :(得分:0)

import java.util.Scanner;

public class hil {
    public static void main(String[] args) {
        Scanner m = new Scanner(System.in);

        System.out.print("Insert a number:");
        int num = m.nextInt();

        int[] ar = {10, 20, 30, 40, 50};
        int sum = 0;
        Boolean inArray = false;
        for (int n : ar) {
            sum += n;
            if (num == n) {
                inArray = true;
            }
        }
        System.out.println(inArray);
        System.out.println(sum);
    }
}

注意:我假设您需要元素的总和,这也是您尝试使用其他循环的原因。

答案 4 :(得分:-2)

我认为如果你想打印print true。你应该用双引号括起来。喜欢:System.out.println(&#34; true&#34;);

........................我可能错了......但我试图建议一个可能的解决方案。