1

我正在尝试编译一个在数组中搜索某个元素的程序,int target. 它需要是一种public static boolean方法,但我所拥有的代码无法打印返回值。为什么是这样?我没有考虑所有情况吗?感谢您的任何输入,我确定它一定是我忽略的小东西。

代码:

 public static void main(String[] args) 
 {
  int[] array = {3, 6, 9, 12, 15, 19, 21, -1, -45, 0};
  int target = 2; 
 }

 public static boolean linearSearch(int[] array, int target)
 {
   boolean linearSearch = false;
   for (int i = 0; i < array.length; i++){ 
     if(array[i] == target){
     linearSearch = true; 
     }
     else{
       linearSearch = false;
     }
   }
   return linearSearch;  
 }
}

此外,除此之外,可以将其编码为以下内容吗?

public class ArrayUtilities
{

public static void main(String[] args) 
{
  int[] array = {3, 6, 9, 12, 15, 19, 21, -1, -45, 0};
  int target = 2; 
}

 public static boolean linearSearch(int[] array, int target)
 {
   boolean linearSearch = false;
   for (int i = 0; i < array.length; i++){ 
     if(array[i] == target){
       linearSearch = true; 
     }
   return linearSearch;  
 }
}
4

3 回答 3

1

你没有打印任何东西。在 Java 中,执行从public static void main(String[])方法开始,通常到此结束。在您的情况下,此方法初始化一些变量并退出。您需要调用linearSearch(array, target),将其存储在变量中,然后打印(或将返回值传递给打印函数),即System.out.println(linearSearch(array, target));.

第二块代码应该运行良好。但是,第一个将导致错误的输出。考虑数组1, 2, 3和目标2。循环将遍历数组,找到2,设置linearSearchtrue,然后转到3并设置linearSearchfalse。那不是你想要的。找到一个元素后,就不能再找不到它了。

于 2013-10-28T17:29:28.997 回答
1

除了不在linearSearch您的方法中调用该函数之外,即使该项目存在main,您的第一个版本也linearSearch可能返回。false

您的第二个版本很好,但如果找到如下项目,也可以通过从函数返回来改进它:

 public static boolean linearSearch(int[] array, int target)
 {
   for (int i = 0; i < array.length; i++){ 
     if(array[i] == target){
        return true;
   }
   return false;  
 }
}

您还需要在 main 方法中调用它:

public static void main(String[] args) 
{
  int[] array = {3, 6, 9, 12, 15, 19, 21, -1, -45, 0};
  int target = 2; 
  if(linearSearch(array,target)) {
      System.out.print("found");
  }
}

您的第一个版本的问题是可以在循环的第二次迭代中找到一个项目for,您的 boollinearSearch将设置为true,但如果该项目在您的数组末尾不存在,您将得到false结果,因为该else部分将设置为false数组中的所有其他元素。

于 2013-10-28T17:31:15.527 回答
0

您可以返回真值或假值。

    public static void main(String[] args) {
    int[] array = {3, 6, 9, 12, 15, 19, 21, -1, -45, 0};
    int target = 2;
    System.out.println(linearSearch(array, target));
}
public static boolean linearSearch(int[] array, int target) {
    for (int i = 0; i < array.length; i++) 
        if (array[i] == target) 
            return true;
    return false;
}
于 2013-10-28T17:46:25.667 回答