2016-05-21 6 views
2

Ich baue ein einfaches Knock Knock Spiel. Ich habe es fertig, aber ich möchte ein kleines Feature hinzufügen. Es ist derzeit so eingestellt, dass es nur ein paar Wörter/Phrasen als richtige Antwort und alles andere akzeptiert, was zu einem "Fehler" führt. Ich möchte eine Klasse mit einer Liste akzeptabler Works oder Phrasen erstellen und die Benutzereingaben für diese Klasse überprüfen lassen.
Hier ist die Testklasse, die ich zum Spielen geschaffen habe.Java Benutzereingaben gegen Variablen in einer anderen Klasse überprüfen

import java.util.*; 

    public class test 
    { 
     static Scanner sc = new Scanner(System.in); 

     public static void main(String[] args) 
     { 

    System.out.println("Choose a word"); 
    String userEntry = sc.next().toLowerCase(); 

    if (userEntry.equals(test1.*)) 
    { 
     System.out.println("We found a match"); 
    } 

    else if (!userEntry.equals(test1.*)) 
    { 
     System.out.println("We did not find a match"); 
    } 


} 

}

Der Code ist von der Klasse, die die Variablen beherbergen wird.

In der ersten Klasse habe ich versucht, eine Wildcard zu verwenden, um alle Variablen in der Klasse aufzurufen, aber es erzeugt einen Fehler. Jede Hilfe würde sehr geschätzt werden.

+0

können Sie nicht "alle Variablen nennen wie das, es ist einfach nicht gültig Java-Syntax. Vielleicht möchten Sie sich https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html ansehen – pvg

Antwort

1

Sie können keine Wildcard-Suche wie diese in Java durchführen.

Sie brauchen wirklich keine andere Klasse, Sie können einfach alle Wörter/Phrasen in eine Liste setzen und mit der Liste vergleichen.

Beispiel:

import java.util.*; 

public class test 
{ 
    static Scanner sc = new Scanner(System.in); 

    // add all the words you need into this array 
    static String [] wordArr = new String[] { "yes", "hello", "boo" }; 

    // this converts the array to a List 
    static final List<String> WORDS 
      = new ArrayList<String>(Arrays.asList(wordArr)); 

    public static void main(String[] args) 
    { 
     System.out.println("Choose a word"); 
     String userEntry = sc.next().toLowerCase(); 

     // check if the word is in the list 
     if (WORDS.contains(userEntry)) 
     { 
      System.out.println("We found a match"); 
     } 
     else 
     { 
      System.out.println("We did not find a match"); 
     } 
    } 
} 

Side Hinweis: Sie sollten sich überlegen den Scanner im Hauptverfahren zu schaffen und den Scanner schließen, wenn Sie mit ihm fertig sind.

+0

Wenn Sie das Array auf Klassenebene initiieren (wie oben), kann die Array-Variable in mehreren verwendet werden Klassen? –

+0

Ja. Der einfachste Weg wäre, das Array einfach öffentlich zu machen, dann kann man mit 'test.wordArr' auf andere Klassen zugreifen. Da es statisch ist, müssen Sie keine Instanz von test erstellen, nur um darauf zuzugreifen. –

0

versuchen diese

class test1 
     { 
    public static list<String> addElement(){ 
    List<String> list=new ArrayList<>(); 
    list.add("yes"); 
    list.add("boo"); 
    list.add("hello"); 
    } 

} 


class test{ 
public static void main(String[] args0) 
{ 
Scanner sc=new Scanner(System.in); 
String match=sc.next(); 
ArrayList<String> list=test1.addElement(); 
for(String test : list) 
{ 
    if(test.equels(match) 
    print("we have found match"); 
    else 
    print("no match found"): 
} 
} 
} 
Verwandte Themen