搜索数组中的元素

时间:2013-12-05 07:42:58

标签: java arrays

我必须编写一个包含3个并行数组的程序,一个包含4位数的学生ID,第二个包含学生名称,最后一个包含GPA,数组的大小必须为10 该程序还能够进行学生ID搜索,如果它不存在则显示错误信息

第一部分工作正常但是当涉及到搜索它不起作用

  import java.util.ArrayList;

 import javax.swing.JOptionPane;

 import java.util.Scanner;

public class StudentIDArray
 {

public static void main(String[] args)
{
    int option;
    String inputString;
    inputString = JOptionPane.showInputDialog("Welcome"
            +" Choose the option you will like"
            + " \n1. Enter Student  Information "
            + "\n2. Search for Student");
    option = Integer.parseInt(inputString);

    if(option ==1)
    {
        Scanner in = new Scanner(System.in);
        System.out.println("Enter the name of the Student");
        String[] studentname = new String[10];

        for(int i =0; i<studentname.length; i++)
        {

            studentname[i] = in.nextLine();
        }

        System.out.println("Enter the 4 digit Student ID");
        int[] studentID = new int[10];
        for(int x=0; x<studentID.length; x++)
        {
            studentID[x] = in.nextInt();
        }



        System.out.println("Enter the Student's Grade Point Average");
        int[] gpa = new int[10];
        for(int y=0; y<studentID.length; y++)
        {
            gpa[y] = in.nextInt();
        }
    }
    else
    {
        searching();
    }




}

public static void searching()
{

    int idnumber,
        results;
    int[]studentID = null;

    String inputString;
    inputString = JOptionPane.showInputDialog("Please Enter the ID number");
    idnumber = Integer.parseInt(inputString);

    results = sequentialSearch(studentID, idnumber);
    if (results == -1)
    {
        System.out.println("no information");
    }
    else
    {
        System.out.println("yeii congrats");
    }

}


public static int sequentialSearch(int[] studentID, int value)
{
      int index;
      int element;
      boolean found;

      index =0;

      element = -1;
      found = false;

      while(!found && index < studentID.length)
      {
        if (studentID[index] == value)
        {
            found = true;
            element = index;
        }
        index++;
      }
      return element;

    }
}

3 个答案:

答案 0 :(得分:0)

主要问题是您在本地声明studentID数组。

改为使其成为类成员(实例成员将是首选,但所有方法都是静态的),以便您的方法在同一个数组上工作,而不是在不同的数组上工作:

public class StudentIDArray
{
    private static int[] studentID = new int[10];
    ...

请注意,这会将条目数限制为数组大小,如果超出这些限制,您将获得例外。请考虑使用VectorArrayList

答案 1 :(得分:0)

searching(studentID);

将studentID数组传递给搜索方法,而不是再次声明它。

public static void searching(int[] studentID)
{

    int idnumber,
        results;
    //int[]studentID = null;

    String inputString;
    inputString = JOptionPane.showInputDialog("Please Enter the ID number");
    idnumber = Integer.parseInt(inputString);

    results = sequentialSearch(studentID, idnumber);
    if (results == -1)
    {
        System.out.println("no information");
    }
    else
    {
        System.out.println("yeii congrats");
    }

}


public static int sequentialSearch(int[] studentID, int value)
{
      int index;
      int element;
      boolean found;

      index =0;

      element = -1;
      found = false;

      while(!found && index < studentID.length)
      {
        if (studentID[index] == value)
        {
            found = true;
            element = index;
        }
        index++;
      }
      return element;
    }

更好的方法是将它保存为@Andreas所指出的静态/类变量。

答案 2 :(得分:0)

这些是计划的运行步骤....      第一步=&gt;输入数组大小。
     第二步=&gt;输入数组成员      第三步=&gt;输入搜索数组的整数。

        import java.util.Scanner;

        public class Searching 
        {
            public static void main(String[] args)
            {
                 int temp =-1;
                Scanner user_input=new Scanner(System.in);
                System.out.println("Enter Size Of Array ");

                int Size=user_input.nextInt();
                int[] a=new int[Size];
                //Scan input Array.
                System.out.println("Enter element Of an Array...");
                for(int j=0;j<Size;j++)
                {
                    a[j]=user_input.nextInt();
                }

               System.out.println("The contents of the Array are :");
               //Print input Arrray
               for(int i=0;i<a.length;i++)
               {
                  System.out.println("array[" + i + "] = " + a[i]);
               }

                System.out.println("Enter Integer For Searching..");
                int Search=user_input.nextInt();
               //Searching in an Array.
                for(int index=0;index<a.length; index++)
                {
                    if(a[index]==Search)
                    {
                        temp=index;
                        break;
                    }
                }
                if(temp!=-1)
                {
                    System.out.println(" The search element is : " + Search);
                    System.out.println(" It is found in the array at position : " + temp);      
                }
                else
                  System.out.println("\n Element not Found..");
            }
         }