#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);
а затем сравните его с введенным вами числом.