顺序搜索算法

时间:2016-07-19 22:57:56

标签: java arrays

大家好,我在创建顺序时遇到了麻烦 二维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;
  } 

}

2 个答案:

答案 0 :(得分:5)

您的问题没有多大意义,但您的代码中的错误很容易找到。

while(!found && index1 == value)

这用简单的英语说,在循环中做这些事情,而这些条件都是正确的:

  1. 发现是假的
  2. index(数组索引)等于value(要在数组中查找的数字)
  3. 在循环开始时,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循环,以提高效率。