0

I am having some trouble with the Scanner.nextline(), it seems to work fine and dandy until I try to compare the input with the corresponding string. I basically want to see if some input is equal to some element in an array (teams). Here's my code and output:

package teams;

import java.util.Arrays;
import java.util.Scanner;



class TeamTable2 {
     static String[] teams = new String[] {  
         "Team A", "Team B", "Team C",
         "Team D", "Team E"
     };

     // inArray returns true if an specified string is "in" an specified array
     static boolean inArray(String thing, String[] array){ 
         boolean in = false;
         for(int i = 0; i < array.length; i += 1){
             if(array[i] == thing){
                 in = true;
             }
         }
        return in;
     }

     static void inputInArray(){
         Scanner userInput = new Scanner(System.in);
         String inputTeam = null;

         // The while loop continues if the input doesn't match any element
         while(!inArray(inputTeam, teams)){
             System.out.println("Team: ");
             inputTeam = userInput.nextLine();
             System.out.println("");
             if(!inArray(inputTeam, teams)){
                 System.out.println("Not in array: " + inputTeam + ",   length: " + inputTeam.length());
         }
         }
     userInput.close();
 }    

public static void main(String args[]){
    System.out.println("'Team A' in teams: " + inArray("Team A", teams));
    inputInArray();

}
}

Output:

'Team A' in teams: true
Team: 
Team A  //My Input

Not in array: Team A, length: 6
Team: 

So obviously the output has the right length and when I use the pure String "Team A" in the inArray method it returns true, so I don't understand why the input isn't interpreted as being in the array?

PandaDeTapas
  • 516
  • 1
  • 7
  • 16
  • `if(array[i] == thing){` use `equals()` instead of == and use `equalsIgnoreCase()`if you don't care about case sensitivity. Docs: http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#equalsIgnoreCase(java.lang.String) – Nico Mar 16 '15 at 19:49

1 Answers1

2

This is wrong if(array[i] == thing){, use equals for Strings: if(array[i].equals(thing)){. Panda you should really learn the difference :)

uraimo
  • 19,081
  • 8
  • 48
  • 55