当前位置: 首页 > 知识库问答 >
问题:

为什么我的使用“for-each循环”的线性搜索代码对混合输入不起作用?

龚伯寅
2023-03-14

我的代码适用于升序或降序数组输入,如11,12,13,14,15等...但它不适用于混合顺序数组输入,如11,13,12,15,14

import java.util.Scanner;
public class LinearSearch {
    public static void main(String[] args) {
        int LS[]=new int[100];                      //LS is the array
        int n,key,flag=0;                          //n is the number of array elements and key is the element to be searched
        Scanner sc=new Scanner(System.in);
        System.out.println("Enter no.of array elements");
        n=sc.nextInt();
        System.out.println("Enter array elements");
        for(int i=0;i<n;i++)
        LS[i]=sc.nextInt();
        System.out.println("Enter element to search");
        key=sc.nextInt();           
        for (int i:LS){
          if(LS[i]==key){
            flag=1;
            System.out.println(key+" is found at location "+(i+1));
          }
      }
      if(flag==0){
        System.out.println(key+" is not found");
    }  
  }
}

共有1个答案

萧丁雨
2023-03-14

我认为问题出在这里:if(ls[I]==key)您需要更改为if(I==key),因为根据for loopfor(int I:ls)I代表数组的元素,而不是索引。

如果要获取元素的索引,可以使用for循环,而不是foreach循环:

for(int i = 0; i<LS.length; i++) {
    if(LS[i]==key){
        flag=1;
        System.out.println(key+" is found at location "+(i+1));
      }
}

还有一件事:

您要求的是元素的数量,因此使用n而不是100初始化数组将是更好的实践:

int LS[] = new int[n]; 

当您初始化数组时,它会根据大小分配内存。假设n等于20,那么初始化大小为100的数组将是一种浪费

否则,如果用户输入的值大于100,程序将抛出ArrayIndexOutOfBoundsException

 类似资料:
  • 问题内容: 在这段代码中,为什么不按我的意愿初始化我的数组?是不是for-each循环并非旨在做到这一点,或者我只是没有正确使用它? 问题答案: for-each循环不适用于这种情况。您不能使用for-each循环来初始化数组。您的代码: 将转换为以下内容: 如果这是一个对象数组,它仍然会失败。基本上,for-each依次将集合或数组中的每个条目分配给您提供的变量,然后可以使用该变量。该变量 不

  • 问题内容: 我正在尝试编写关于弹跳球的代码,但是我仍然沉迷于如何 使弹跳球。该代码似乎是正确的,日食没有错误消息 ,但是球还是没有动。任何帮助/提示表示赞赏。 这是我的代码: 问题答案: 基本上,什么都没有移动。 每次滴答作响,您要做的就是重新粉刷。 您需要将移动逻辑移至已注册的方法Timer 更像… 这样,每次Timer打勾时,您都在相应地更新球的位置… 更新了工作示例 我做了两个更改。我将设置

  • 问题内容: 在包含forEach循环的行上引发了出站异常,但是据我所知,此代码没有错。for循环从char数组的元素0开始,一直循环直到到达最后一个元素…但是当我尝试使用更长的for循环来执行此代码时,即 该代码按预期工作。 为什么在这种情况下for循环起作用,而forEach循环不起作用? 问题答案: 如果您需要在循环中使用索引访问某些内容,请使用for,而不是foreach(已增强)。 现在,

  • For Each循环用于为数组或集合中的每个元素执行语句或一组语句。 For Each循环类似于For循环; 但是,为数组或组中的每个元素执行循环。 因此,步进计数器将不存在于这种类型的循环中。 它主要用于数组或在File系统对象的上下文中使用,以便递归操作。 语法 (Syntax) 以下是VBA中For Each循环的语法。 For Each element In Group [state

  • 我已经用Python实现了基本的线性最短路径算法。根据我遇到的各种网站,这只适用于有向无环图,包括this,this和this。然而,我看不出为什么会这样。 编辑:正如Beta所要求的,下面是拓扑排序:

  • 问题内容: 我正在用Java编写电台代码,并且正在使用一个线程来当然播放流。我在线程的run方法中有一个while循环,该循环检查名为ShouldPlay的变量是否为true,以及是否运行该变量。播放器。然后,我有一个pause()方法,将变量设置为false,并且自然希望它在变量为false时不运行播放器。我创建了一个小示例,说明如何在下面进行设置: 我想发生的事情是,当线程首次运行时,它应该打