我的代码适用于升序或降序数组输入,如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");
}
}
}
我认为问题出在这里: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时不运行播放器。我创建了一个小示例,说明如何在下面进行设置: 我想发生的事情是,当线程首次运行时,它应该打