Как найти введенное целочисленное значение в списке массива в Java?

#java #arrays #arraylist

#java #массивы #arraylist

Вопрос:

это моя первая «проблема»: создайте программу, позволяющую пользователю вводить целочисленное значение для поиска в списке3. Ваша программа должна отображать, найдено ли введенное целочисленное значение в list3, сколько их в list3 и каковы их местоположения в list3? «

Это почти сделано, единственная проблема в том, что я не мог следовать тому, что написано на выходе, приведенном в примере:

Список 1 : 1 3 2 5 7 8 5 6 9 4

Список 2 : 2 1 4 3 2 1 4 2 0 2

Список 3 : 3 4 6 8 9 9 9 8 9 6

Входное значение для поиска в списке3: 9

Значение 9 находится в Списке3!

В списке 3 их 4.

Находится по адресу: list3[4], list3 [5], list3[6], list3[8]

и это мой вывод:

список 1 : 1 3 2 5 7 8 5 6 9
4 список 2 : 2 1 4 3 2 1 4 2 0 2
список 3 : 3 4 6 8 9 9 9 8 9 6

Входное значение для поиска в списке3: 9

Значение 9 находится в Списке3!

В списке 3 их 4.

Находится по адресу: 4

как мне отобразить «находится по адресу: «, как в примере?

ОТРЕДАКТИРОВАНО Извините, я новичок здесь и в программировании. Это мой код:

 import java.util.ArrayList;

import java.util.Scanner;

public class List2Sample
{
    public static void main(String[] args)
        {
            int list1[] = new int[10];
            int list2[] = new int[10];
            int list3[] = new int[10];
            String input = "";
            int i, x, num = 0, count = 0;
            boolean found = false;
            ArrayList<Integer> arr = new ArrayList<Integer>(10);
            
            Scanner in = new Scanner(System.in);
            
            for(i = 0; i < 10; i  )
                { 
                    list1[i] = 0;
                }
                    for(i = 0; i < 10; i  )
                        { 
                            System.out.print("List 1 ["   i   "] : ");
                            try
                                { 
                                    list1[i] = in.nextInt();
                                }
                                
                            catch(Exception e)
                                {
                                    System.out.println("Error!");
                                }
                        }
            for(i = 0; i < 10; i  )
                { 
                    list2[i] = 0;
                }
                
                    for(i = 0; i < 10; i  )
                        { 
                            System.out.print("List 2 ["   i   "] : ");
                            try
                                { 
                                    list2[i] = in.nextInt();
                                }
                                
                            catch(Exception e)
                                {
                                    System.out.println("Error!");
                                }
                        }
                        
            System.out.print("list1 : ");
            for(i = 0; i < 10; i  )
                {
                    System.out.print(list1[i]   "t"); 
                }
            
            System.out.println();
            System.out.print("list2 : ");
            for(i = 0; i < 10; i  )
                {
                    System.out.print(list2[i]   "t"); 
                }
            
            System.out.println();
            System.out.print("list3 : ");
            for(i = 0; i < 10; i  )
                {
                    list3[0] = list1[0]   list2[0]; list3[1] = list1[1]   list2[1]; list3[2] = list1[2]   list2[2];
                    list3[3] = list1[3]   list2[3]; list3[4] = list1[4]   list2[4]; list3[5] = list1[5]   list2[5];
                    list3[6] = list1[6]   list2[6]; list3[7] = list1[7]   list2[7]; list3[8] = list1[8]   list2[8];
                    list3[9] = list1[9]   list2[9];
                            
                    System.out.print(list3[i]   "t");
                }
                
            System.out.println();
            System.out.print("Input value to search in List3: ");
                x = in.nextInt();
                arr.add(list3[0]);
                arr.add(list3[1]);
                arr.add(list3[2]);
                arr.add(list3[3]);
                arr.add(list3[4]);
                arr.add(list3[5]);
                arr.add(list3[6]);
                arr.add(list3[7]);
                arr.add(list3[8]);
                arr.add(list3[9]);

                for (int n : list3)
                    {
                        if (n == x)
                            {
                                found = true;
                                break;
                            }
                    }
                
                for (i = 0; i < 10; i  )
                    {
                        if (list3[i] == x)
                        {
                            count  ;
                        }
                    }
                    
                for (Integer value : arr)
                    {}   
                int pos = arr.indexOf(x);
                
                if(found)
                    System.out.println("The value "   x   " is in List3!");
                else
                    System.out.println("The value "   x   " is in List3!");
                    
                System.out.println("There are "   count   " of it in List 3.");
                System.out.println("Located at: "   pos);
        }
}  

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

1. Пожалуйста, покажите свой код в вашем вопросе

2. @tgdavies привет, спасибо за напоминание. я отредактировал свой пост и включил свой код.

Ответ №1:

Предполагая, что list3 — это список целых чисел, затем используя потоки java8

     String locations=IntStream.range(0,list3.size())
                           .filter(i->list3.get(i)==userInput)
                           .map(index->"list3[" index "]")
                           .collect(Collectors.joining(","));

    Int occurences=locations.split(","). length;

    if(occurences>0){System.out.println(userInput  "occurred"   occurences  " Times  " at locations " locations);}
   else{System.out.println(userInput  "Was not found");}
  

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

1. я отредактировал свой пост и включил свой код. я использую как java6, должен ли он быть совместим с моим кодом?

2. java streams была введена начиная с 7. Боюсь, вам придется обновить

Ответ №2:

indexOf(ch) будет возвращать только первое появление значения в массиве, если вы хотите, вы могли бы добавить второй параметр, чтобы указать Java, с чего начать поиск символа, например: indexOf(ch, fromIndex) .

Однако в вашем случае гораздо проще просто использовать цикл на основе индекса для перебора всех элементов в массиве, а затем записать позиции, если вы нашли совпадающие символы, например:

 for(int i = 0; i < arr.length; i  ){ // loop through all indices of the array, starting from 0, end at arr.length - 1
    if(arr[i] == ch){ // arr[i] is each character in the array at index i, ch is the target character you're matching against
        System.out.println("Character found at position "   i);
    }
}