【问题标题】:Return Type Boolean, Failure to Print Value返回类型布尔值,打印值失败
【发布时间】:2013-11-07 14:30:04
【问题描述】:

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

【问题讨论】:

  • 你定义了但没有调用linearSearch
  • ...你永远不会调用该方法。
  • Also, somewhat besides the point, can this be coded as the following instead? 你编译并运行它并查看结果了吗?
  • 编译代码并不意味着运行它。此外,您需要调用一个方法来执行它。
  • 感谢所有快速而有帮助的回复。我想我误解了 return (value);实际上会打印真假。运行第二段代码不会打印任何内容,可能是因为我刚才提到的当您提到调用方法时,我是从我的 main 中执行的,对吗?

标签: java arrays boolean return


【解决方案1】:

除了不在您的main 方法中调用linearSearch 函数之外,您的第一个版本的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 循环的第二次迭代中找到一个项目,您的布尔值linearSearch 将设置为true,但如果该项目不存在在数组的末尾,您将得到 false 结果,因为对于数组中的所有其他元素,else 部分将设置为 false

【讨论】:

    【解决方案2】:

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

    第二段代码应该可以正常工作。但是,第一个将导致错误的输出。考虑数组1, 2, 3 和目标2。循环将遍历数组,找到2,将linearSearch 设置为true,然后转到3 并将linearSearch 设置为false。那不是你想要的。元素被找到后,就不能不被发现了。

    【讨论】:

    • 一个清晰而翔实的答案,并用我能理解的基本cs语言写成。谢谢!
    【解决方案3】:

    你可以返回真值或假值。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-12
      • 2017-05-03
      • 1970-01-01
      • 2013-07-02
      • 1970-01-01
      • 1970-01-01
      • 2013-08-18
      相关资源
      最近更新 更多