【问题标题】:Java compare array element to variableJava将数组元素与变量进行比较
【发布时间】:2017-04-04 05:09:45
【问题描述】:

Java 新手,我正在编写一个程序,该程序初始化了一个数字数组,以及一个保存单个整数的变量B。我想做的是让我的程序将数组元素与B 进行比较,然后打印没有数字B 的数组。这是我目前写的一个例子。

我希望在没有 17 的情况下打印数组。坚持写完之后要做什么。

public class Harrison7b
{
   public static void main(String [] args)
   {
      int[]arrayA = {2,4,8,19,32,17,17,18,25,17};


      for(int B = 17; B < arrayA.length - 1; B++)
      {


      }
   }
}

【问题讨论】:

  • 您的意思是要删除数组中的 17 ???
  • 1/ 创建一个新数组arrayB 2/ 迭代arrayA 3/ 从arrayA 复制到arrayB 如果来自arrayA 的num 不是17?一些潜在的阅读:docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html
  • 从 B = 0 开始; ??
  • 我希望将变量与数组进行比较,因为变量是 17 并且数组中有 17 我希望它打印出删除了 17 的数组
  • 看来您需要重新阅读有关for 循环如何工作的章节。

标签: java arrays for-loop


【解决方案1】:

您需要一个单独的计数器变量来遍历Array i,e; i 并且要检查您的号码是否存在于数组中,您必须使用 if statement

public class Harrison7b{
    public static void main(String[] args) {
        int B = 17;
        int[] arrayA = { 2, 4, 8, 19, 32, 17, 17, 18, 25, 17 };
        for (int i = 0; i < arrayA.length; i++)
            if (arrayA[i] != B) {
                System.out.print(arrayA[i]);
                System.out.print(i<arrayA.length-1? " ":"");
            }
    }
}

【讨论】:

    【解决方案2】:
    public class Harrison7b
    {
       public static void main(String [] args)
       {
          int[]arrayA = {2,4,8,19,32,17,17,18,25,17};
    
    
          for(int B = 17; B < arrayA.length - 1; B++)
          {
    
    for (int i=0;i<arrayA.length;i++)
    if(arrayA[i]==B)
    System.out.println(B);
          }
       }
    }
    

    【讨论】:

      【解决方案3】:
      public class Harrison7b
      {
         public static void main(String [] args)
         {
            int[] arrayA = {2,4,8,19,32,17,17,18,25,17};
      
            int num=17;
      
            for(int B = 0; B < arrayA.length; B++)
            {
                if(arrayA[B] == num){
                    continue;
                }
      
                System.out.println(arrayA[B]);
      
      
            }
         }
      }
      

      您应该从 0 索引开始循环,直到长度或数组。在每次迭代中,将数字与数组的当前元素进行比较。如果它们匹配,continue 与下一次迭代,这样数字就不会被打印出来。

      这是一个非常简单的程序,我建议您在寻求帮助之前花点时间思考。

      【讨论】:

        【解决方案4】:

        试试这个:

            int[]arrayA = {2,4,8,19,32,17,17,18,25,17};
            int myVar = 17;
        
            for(int i = 0; i < arrayA.length; i++){
                if (arrayA[i] != myVar){
                    System.out.print(arrayA[i]);
                }
            }
        

        这将打印出与17 //myVar不同的数字。

        【讨论】:

        • 喜欢这个答案对我来说很容易理解,因为我是初学者,还有两个问题。如果我想使用方法调用来做到这一点,那可能吗?另外,我如何将数组上的数字分开,以免它们聚集在一起?
        【解决方案5】:

        将 Java 8 流与 filter 一起使用

        public class Main {
            public static void main(String[] args) {
                int[] myArray = {2,4,8,19,32,17,17,18,25,17};
                int valueToRemove = 17;
        
                // create a new array
                int[] newArray = Arrays.stream(
                    myArray
                ).filter( // keep the values that aren't the value to remove
                    value -> value != valueToRemove
                ).toArray();
        
                // print out the array
                for (int i : newArray) {
                    System.out.println(i);
                }
            }
        }
        

        【讨论】:

          【解决方案6】:

          您可能需要一个单独的计数器变量来遍历数组,或者只使用 @DM 提到的 foreach 循环。让我们使用一个计数器,比如i。然后你需要检查整数是否在数组中。让我们为此使用if 条件。

          那么您的代码将如下所示:

          public class Harrison7b
          {
             public static void main(String [] args)
             {
                int[]arrayA = {2,4,8,19,32,17,17,18,25,17};
          
          
                int B = 17;
          
                for(int i = 0; i < arrayA.length; i++)
                // Or you may use just for(int x:arryaA)
                {
                    if (arrayA[i] != B)
                        System.out.println(arrayA[i]);
                }
             }
          }
          

          【讨论】:

          • Nitpick:“您需要一个单独的计数器变量来遍历数组。” - 不,不是真的。 for (int x:myArray) 可以正常工作。
          • @DM 是的。没错。
          猜你喜欢
          • 2017-01-12
          • 2012-10-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-06-24
          • 1970-01-01
          • 1970-01-01
          • 2013-09-07
          相关资源
          最近更新 更多