Java Vergleichen Sie einfachen char zu char-array
Brauche ich, um zu vergleichen, single-char zu char-array und sehen, ob array, char.
Mein Aktueller code sieht wie folgt aus:
public boolean isThereChar(char[] chaArray, String chr){
boolean bool = false;
for(int i=0; i < chaArray.length; i++)
{
if(chr.equals(chaArray[i])){
bool = true;
}
}
return bool;
}
Bearbeiten Hinweise:
Wirklich sorry für die verwirrende! Ich bin nur ein Java-Anfänger =/
Im Grunde Schreibe ich kleine Hangman-Spiel mit GUI.
Mein Programm liest aus text-Datei und wählt zufällig Wort, welches der Spieler zu erraten hat, dann druckt Sie es aus im verborgenen Weise, wie diese: _ _ _ _ _
In diesem Fall möchte ich, dass Spieler nach Eingabe Zeichen oder Zeichenfolge (person erraten können entweder ganze Wort oder nur ein Buchstabe)
Dann will ich mein Programm zu nehmen, Brief oder string und zu vergleichen, um meine versteckten word
Folgende code wählt word und versteckt es:
public String pickWord(){
String guessWord = (wordsList[new Random().nextInt(wordsList.length)]);
return guessWord.toLowerCase();
}
//Hides picked word
public char[] setWord(){
char[] word = new char[pickWord().length() * 2];
for (int i = 0; i < word.length; i+=2) {
word[i] = '_';
word[i + 1] = ' ';
}
return word;
}
Dann die person, die Eingabe seines Charakters, die er errät, um das Programm mit dem folgenden code:
public void actionPerformed(ActionEvent e) {
String action = e.getActionCommand();
if (action == "Guess Letter"){
inputChar = JOptionPane.showInputDialog("Please enter letter (a-z)");
if (inputChar.length() > 1){
GuessedLetters glr = new GuessedLetters(inputChar);
glr.setInString(inputChar);
//For testing purposes
System.out.println("This is String: " +glr.getInString());
}else{
GuessedLetters glr = new GuessedLetters(inputChar);
glr.setInChar(inputChar);
//For testing purposes
System.out.println("This is Char: " +glr.getInChar());
}
}
Schließlich möchte ich, dass die Zeichen, die eingegeben wurde und zu vergleichen, um mein array von chars, die meine verborgene Wort:
public boolean isThereChar(char[] array, String str){
return isThereChar(array, str.charAt(0));
}
public boolean isThereChar(char[] array, char c){
for(int i=0; i<array.length; i++){
if (array[i] == c) return true;
}
return false;
}
Möchte ich überprüfen, was funktioniert mein code zurückgibt (true oder false), aber ich halte das scheitern, dies zu tun.
(Jetzt bin ich versucht, rufen Sie die Methode in meiner main-Klasse, überprüfen Sie es, wenn Sie mir Tipps geben, wie Sie es tun, ansonsten lasst es mich bitte wissen).
Und die Funktion gibt den string. Nicht ein char-array
bitte mehr code, ist diese Methode nicht ausreichend für die NPE
Kannst du etwas code, wo Sie
isThereChar()
?Und Sie vergleichen gegen ein ganzes array. Nicht-element-wise
InformationsquelleAutor Shepard | 2012-08-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mal sehen, ob ich habe, was Sie brauchen :
Sie müssen wissen, was? Der index des gefundenen Zeichens? Wo gibt es eine NPE? Haben Sie überprüft, dass Ihre
char[] array
ist nicht null?Ja, ich, drucken Sie, sobald ich es schaffen. Ich denke, ich weiß nur nicht, wie um zu überprüfen, Wert, den diese Methode zurückgibt. Irgendwelche Ideen?
Ich verstehe immer noch nicht, was Sie brauchen. Ich werde Bearbeiten Sie meine Antwort mit einem Beispiel, um zu sehen, ob ich dir helfen kann
Grundsätzlich will ich diese Methode, um zu prüfen, ob char war aufgedruckt, in meinem char-array. Wenn es true zurück, wenn es nicht - falsch. Auch ich möchte auszudrucken Wetter ist es true oder false für Testzwecke. Und ich habe fest auf das druckgut.
InformationsquelleAutor StepTNT
Würde ich verwenden:
Chars.contains(array, chr);
mit Guave CharsInformationsquelleAutor
Die NullPointerException ist da, weil entweder
chaArray
oderchr
istnull
wenn Sie die Methode aufrufen. (Und wenn nicht, dann ist die NullPointerException Auftritt irgendwo anders!!)Dem anderen problem mit deinem code ist diese Zeile:
Seit
chr
ist tatsächlich ein String ist, was passiert hier ist, dass der WertchaArray[i]
auto-Box alsCharacter
Objekt, und dann als argument übergebenString.equals(Object)
. Aber dieString.equals(Object)
zurückfalse
es sei denn, das argument ist einString
... also dein code würde nicht finden Sie die Zeichen sowieso.Müssen Sie entweder vergleichen Sie die Zeichen wie dieses:
oder erklären
chr
einechar
und vergleichen Sie es als:So die NPE ist nicht vorkommend im code oben ... wie ich schon sagte. Wenn Sie möchten, uns zu erklären, die NPE, müssen Sie nach den code, das es wirft.
Irgendwelche Ideen, wie um zu überprüfen, was der Wert, den es gibt? Scheint, wie ich gerade überprüft es falsch.
Es sei denn, Sie zeigen Sie uns den code und die stacktrace, können wir Ihnen nicht helfen.
InformationsquelleAutor Stephen C
Wählen Sie den Charakter aus, der parameter übergeben, oder übergeben Sie eine char z.B.
oder
chr.charAt(0)
InformationsquelleAutor Craig Payne
String chr
könnte null sein, wodurchNullPointerException
.Verwenden
char chr
stattString
.InformationsquelleAutor Nandkumar Tekale
InformationsquelleAutor Fathah Rehman P