Поиск int в массиве

#arrays #search

#массивы #Поиск

Вопрос:

Я пытаюсь найти значение int в массиве со случайными числами, это то, что у меня есть до сих пор:

 String names[]={"Peter","John","Rudy"};
int number[]=new int[3];
for(int z=0;z<3;z  )
{
    number[z]=(int)(1 Math.random()*200);
}
int option=Integer.parseInt(JOptionPane.showInputDialog("choose and option:n1.namesn2.sorting according to alphabetn3.search numbern4.J"));
switch(option)
{
    case 1:
    {
        for(int l=0;l<names.length;l  )
        {
        jTextArea1.append("" names[l] "t" number[l] "n");
        }
    }
    break;
    case 2:
    {
        String temp="";
        for(int ii=0;ii<names.length;ii  )
        {
            for(int j=0;j<names.length;j  )
            {
                if(names[ii].compareToIgnoreCase(names[j])<0)
                {
                    temp=names[ii];
                    names[ii]=names[j];
                    names[j]=temp;
                }
            }
        }
        for(int x=0;x<names.length;x  )
        {
            jTextArea1.append("" names[x] "n");
        }
    }
    break;
    case 3:
    {
        boolean found=false;
       int searchvalue=Integer.parseInt(JOptionPane.showInputDialog("number?"));
       for(int i=0;i<number.length;i  )
       {
           if(number[i]==searchvalue)

           {

               found=true;
           }
       }
       if(found==true)
       {
           jTextArea1.append("number is found" "n");
       }
       else
       {
           jTextArea1.append("number is not found" "n");
       }
    }
    break;
    case 4:
    {
        for(int q=0;q<names.length;q  )
        {
            if(names[q].startsWith("J"))
            {
                jTextArea1.append(names[q]);
            }
        }
    }

}
 

Даже когда я набираю правильный ответ, он выдает мне сообщение «номер не найден».Я ошеломлен тем, что делать.Любая помощь будет принята с благодарностью.

Комментарии:

1. Попробуйте напечатать searchvalue … это тот же номер, который вы ввели?

2. Также где определен массив чисел?

3. Именно здесь будет полезно использовать отладчик. Хотя ваш код можно было бы улучшить, в принципе он в порядке (я запустил его версию для тестирования). Поэтому поместите его в IDE, установите некоторые точки останова и убедитесь, что ваши переменные соответствуют вашим ожиданиям. Является ли searchvalue тем, что вы ожидаете? Как насчет значений number[] ?

4. @Nullpointer Я попробовал это, и я получил введенное значение

5. @RenegadeAndy это определено в верхней части кода — String names[]={«Питер», «Джон»,»Руди»}; int number[]=new int[3]; for(int z=0;z<3;z ) { число[z]=(int)(1 Math.random()*200); }

Ответ №1:

Попробуйте что-то вроде этого. Я не уверен, что это именно то, что вы ищете…

         public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        boolean found = false;
        int searchvalue;
        int[] lottoNumber = new int[6];  
        lottoNumber[0] = (int) ((56 * Math.random())   1);  
        lottoNumber[1] = (int) ((56 * Math.random())   1);  
        lottoNumber[2] = (int) ((56 * Math.random())   1);  
        lottoNumber[3] = (int) ((56 * Math.random())   1);  
        lottoNumber[4] = (int) ((56 * Math.random())   1);  
        lottoNumber[5] = (5);
        System.out.print("number?");
        searchvalue = input.nextInt();
        for (int i = 0; i < lottoNumber.length; i  ) {
            if (lottoNumber[i] == searchvalue) {

                found = true;
            }
        }
        if (found == true) {
            System.out.print("number is found"   "n");
        } else {
            System.out.print("number is not found"   "n");
        }
    }
}
 

Кстати, в этом нет импорта графического интерфейса.Что именно вы пытаетесь с этим сделать? Можете ли вы добавить весь код целиком?

Комментарии:

1. Я добавил весь код. Это школьный проект, мы должны манипулировать массивами.

2. Еще один вопрос. Откуда вы знаете значение каждого индекса? Вы написали инструкцию print после ввода в нее случайных чисел??

3. Да, я сначала печатаю числа, а затем сверяю их с введенным числом.

4. Я уверен, что логика правильная, поэтому я должен согласиться с джентльменом, который согласился с моим ответом, это должно быть так, как вы предлагаете для ввода

Ответ №2:

Ну, приведенный выше ответ работает для меня! Итак, ответ ваш :

  int searchvalue=Integer.parseInt(JOptionPane.showInputDialog("number?"));
 

Эта строка, вероятно, вызывает проблему.

Попробуйте добавить:

 System.out.println("The number entered was:" searchvalue);
 

а затем сравните его с введенным вами числом.