Как узнать, находится ли введенная в сканер строка в массиве? - PullRequest
0 голосов
/ 03 мая 2018

Мне нужно:

Запрашивает у пользователя строку, если введенная строка находится в массиве «names», выведите ее индекс, если не в именах, распечатайте «НЕ НАЙДЕНО»

вот что у меня есть:

Это для моего финала по программированию, и я не могу понять, как это сделать, потому что я пропустил 1 класс ...

import java.util.Scanner;
public class Final1 {
   public static void main (String[] args) {
      int y;
      int x=0;

      Scanner s = new Scanner(System.in);

      String[] names = {"bob", "maxwell", "charley", "tomtomjack"};

      System.out.print("Enter String Name:");
         y=s.nextInt();

            for (String a: names){
               if (a.equals(y)) 
                  System.out.println(y);   
            }

   }
}

Ответы [ 5 ]

0 голосов
/ 03 мая 2018

Проблема в том, что вы получаете ввод пользователя как int.

Пользовательские значения ввода String для проверки имен, так как имена содержатся в массиве String.

Вы можете попробовать это:

import java.util.Scanner;
public class MyClass {
    public static void main(String args[]) {
       String y;
      int x=0;
      int found = 0; //to identify the index 

      Scanner s = new Scanner(System.in);

      String[] names = {"bob", "maxwell", "charley", "tomtomjack"};

      System.out.print("Enter String Name:");
         y=s.nextLine();

            for (String a: names){
               if (a.equals(y)) 
                { 
                    System.out.println("index of "+a+" is :"+x);   
                    found++; // increment if found 
                }

                x++;//iterate each time to get the index
            }

            if(found == 0)// check if it is not found
                 System.out.println("NOT FOUND");
    }
}

Выход:

Введите имя строки: charley

индекс Чарли: 2

0 голосов
/ 03 мая 2018

Если вы пытаетесь снова напечатать его индекс вместо фактического имени, вам придется немного его изменить.

import java.util.*;

public class Final1 
{

  public static void main (String[] args) 
  {
     int y = 0;
     int x = 0;
     String name = "";
     boolean found = false;

     Scanner s = new Scanner(System.in);

     String[] names = {"bob", "maxwell", "charley", "tomtomjack"};

     System.out.print("Enter String Name:");

     name = s.nextLine(); // get a string instead of an int

     // likely the way your professor would like you to do this
     // there are many ways, but this is the quickest while using a simple array
     // you could cast it to a list
     for(int i=0; i<names.length; ++i){
       if(names[i].equals(name)){
         System.out.print(i);
         found = true;
       }
     }

     if(!found)
       System.out.println("NOT FOUND");
  }
}

Редактировать: Вы также можете использовать статический класс Arrays.

int result = Arrays.binarySearch(names, name);
if(result > 0)
  System.out.println(result);
else
  System.out.println("NOT FOUND");
0 голосов
/ 03 мая 2018

Вы сравниваете int y с отсканированным целым числом. y должна быть строкой, и вы должны искать строку.

Попробуйте это:

import java.util.Scanner;
public class Final1 {
   public static void main (String[] args) {
      int x=0;

      Scanner s = new Scanner(System.in);

      String[] names = {"bob", "maxwell", "charley", "tomtomjack"};

      System.out.print("Enter String Name:");
         String y=s.nextLine();

            for (String a: names){
               if (a.equals(y)) 
                  System.out.println(y);   
            }

   }
}
0 голосов

Использование Array.asList(yourArray).contains(yourValue):

import java.util.*;

public class Final1 
{

public static void main (String[] args) 
{
     int y = 0;
     int x = 0;
     String name = "";

     Scanner s = new Scanner(System.in);

     String[] names = {"bob", "maxwell", "charley", "tomtomjack"};

     System.out.print("Enter String Name:");

     name = s.nextLine();

     if(Arrays.asList(names).contains(name)) // Check this line
     {
        System.out.print(name);   
     }

   }
}
0 голосов
/ 03 мая 2018

Ваш y должен быть String, и вы должны ввести его с s.nextLine(). В настоящее время вы сопоставляете целые числа и строки. Вы можете использовать indexOf

int index = Arrays.asList(names).indexOf(s.nextLine());
return index > -1 ? "Not found" : Integer.toString(index);
...