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