大家好,我在创建顺序时遇到了麻烦 二维int数组的搜索算法。我不确定如何扩展while循环所以它的工作原理,我正在使用的例子就是我写出来的原因,因为你可以看到我的编译器抱怨它与写出来的方式不兼容!
import java.util.*;
import javax.swing.*;
public class pencilneck
{
public static void main(String []alex)
{
int ROWS = 6;
int COLS = 3;
int[][] chargeAcc = new int[ROWS][COLS];
Scanner keyboard = new Scanner(System.in);
for(int row = 0; row < ROWS; row++)
{
for(int col = 0; col < COLS; col++)
{
System.out.print("Enter Account");
chargeAcc[row][col] = keyboard.nextInt();
}
}
System.out.print("Enter an account to be Charged");
int input = keyboard.nextInt();
int results = SequentialSearch(chargeAcc,input);
if(results ==-1)
{
System.out.println("that is an invalid #");
}
else
{
System.out.println("the # is valid");
}
}
public static int SequentialSearch(int[][] array, int value)
{
int index1 = 0;
int element = -1;
boolean found = false;
while(!found && index1 == value)
{
if(array[index] == value)
{
found = true;
element = index;
}
index++;
}
return element;
}
}
答案 0 :(得分:5)
您的问题没有多大意义,但您的代码中的错误很容易找到。
while(!found && index1 == value)
这用简单的英语说,在循环中做这些事情,而这些条件都是正确的:
在循环开始时,index == 0.由于value可能非零,因此第二个条件为false且循环从不运行,导致SequentialSearch立即返回-1。
既然您知道问题所在,我会留给您花时间了解您做错了什么并找出解决方法。
答案 1 :(得分:0)
Array [index]不是int,是一个数组。
我认为你在寻找的是这样的:
enter code here
import java.util.*;
import javax.swing.*;
public class pencilneck
{
public static void main(String []alex)
{
int ROWS = 6;
int COLS = 3;
int[][] chargeAcc = new int[ROWS][COLS];
Scanner keyboard = new Scanner(System.in);
for(int row = 0; row < ROWS; row++)
{
for(int col = 0; col < COLS; col++)
{
System.out.print("Enter Account");
chargeAcc[row][col] = keyboard.nextInt();
}
}
System.out.print("Enter an account to be Charged");
int input = keyboard.nextInt();
int results = SequentialSearch(chargeAcc,input);
if(results ==-1)
{
System.out.println("that is an invalid #");
}
else
{
System.out.println("the # is valid");
}
}
public static int SequentialSearch(int[][] array, int value)
{
int rowIndex = 0;
int element = -1;
boolean found = false;
while(!found && index1 != value)
{
for(int i =0;i<array[index].length;i++)
{
if(array[index][i] == value)
{
found = true;
element = index;
}
}
index++;
}
return element;
}
为您在其所有列中搜索的每一行。 (如果找到,你可以打破for循环,以提高效率。