返回类型布尔值,无法打印值

时间:2013-10-28 17:26:46

标签: java arrays boolean return

我正在尝试编译一个程序,在数组中搜索某个元素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;  
 }
}

3 个答案:

答案 0 :(得分:1)

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

第二块代码应该运行良好。但是,第一个会导致输出错误。考虑数组1, 2, 3和目标2。循环将遍历数组,找到2,将linearSearch设置为true,然后转到3并将linearSearch设置为false。这不是你想要的。找到一个元素后,就不会发现它。

答案 1 :(得分: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;  
 }
}

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

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循环的第二次迭代中找到一个项目,您的bool linearSearch将设置为true,但是如果该数组末尾不存在该项,您将获得false结果,因为else部分将为数组中的所有其他元素设置为false

答案 2 :(得分:0)

您可以返回true或false值。

    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;
}