спасибо, что посетили мой вопрос.В настоящее время я создаю Hangman на Android Studio Java, и одна из моих кнопок, скорее всего, неправильно закодирована, а другая всегда выводит ноль.
Это мой текущий код для моей основной деятельности:
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.Arrays;
import java.util.List;
import static java.lang.String.valueOf;
public class MainScreen extends AppCompatActivity {
Intent n = getIntent();
public ImageView hm1img;
public ImageView hm2img;
public ImageView hm3_1img;
public ImageView hm3_2img;
public ImageView hm4img;
public ImageView hmBodyHead;
public ImageView hmBodyMain;
public ImageView hmBodyArm1;
public ImageView hmBodyArm2;
public ImageView hmLeg1_1;
public ImageView hmLeg1_2;
public ImageView hmLeg2_1;
public ImageView hmLeg2_2;
public TextView wordDisplay;
public TextView incorrect;
public TextView iL;
public TextView verify;
public EditText guessLetter;
public Button bCheck;
public TextView chooseYourWord;
public EditText enterWord;
public Button bContinue;
public Button bStart;
public Button bLoad;
List<String> word;
String guessedLetter;
String otherWord;
int wordLength = (String.valueOf(word)).length();
int dashCounter;
List<String> letters;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_screen);
hm1img = findViewById(R.id.hm1img);
hm2img = findViewById(R.id.hm2img);
hm3_1img = findViewById(R.id.hm3_1img);
hm3_2img = findViewById(R.id.hm3_2img);
hm4img = findViewById(R.id.hm4img);
hmBodyArm1 = findViewById(R.id.hmBodyArm1);
hmBodyArm2 = findViewById(R.id.hmBodyArm2);
hmBodyHead = findViewById(R.id.hmBodyHead);
hmBodyMain = findViewById(R.id.hmBodyMain);
hmLeg1_1 = findViewById(R.id.hmLeg1_1);
hmLeg1_2 = findViewById(R.id.hmLeg1_2);
hmLeg2_1 = findViewById(R.id.hmLeg2_1);
hmLeg2_2 = findViewById(R.id.hmLeg2_2);
wordDisplay = findViewById(R.id.wordDisplay);
incorrect = findViewById(R.id.incorrect);
iL = findViewById(R.id.iL);
verify = findViewById(R.id.verify);
guessLetter = findViewById(R.id.guessLetter);
bCheck = findViewById(R.id.bCheck);
chooseYourWord = findViewById(R.id.chooseYourWord);
enterWord = findViewById(R.id.enterWord);
bContinue = findViewById(R.id.bContinue);
bStart = findViewById(R.id.bStart);
bLoad = (Button) findViewById(R.id.bLoad);
dashCounter = 0;
while (dashCounter > wordLength) {
letters.add("_");
dashCounter++;
}
}
public void bContinueClick(View view) {
word = Arrays.asList(("".split(valueOf(enterWord.getText()))));
chooseYourWord.setVisibility(View.INVISIBLE);
enterWord.setVisibility(View.INVISIBLE);
bContinue.setVisibility(View.INVISIBLE);
bStart.setVisibility(View.VISIBLE);
}
public void bStartClick(View view) {
bStart.setVisibility(View.INVISIBLE);
wordDisplay.setVisibility(View.VISIBLE);
incorrect.setVisibility(View.VISIBLE);
iL.setVisibility(View.VISIBLE);
verify.setVisibility(View.VISIBLE);
guessLetter.setVisibility(View.VISIBLE);
bCheck.setVisibility(View.VISIBLE);
guessedLetter = valueOf(guessLetter.getText());
bLoad.setVisibility(View.VISIBLE);
}
@RequiresApi(api = Build.VERSION_CODES.O)
public void bLoadClick(View view) {
wordDisplay.setText(String.valueOf(letters));
if (wordDisplay.getText() == (null)) {
for (int i = 0; i < wordLength; i++) {
wordDisplay.append("_");
}
}
}
@RequiresApi(api = Build.VERSION_CODES.O)
public void bCheckClick(View view) {
guessedLetter = valueOf(guessLetter.getText());
word = Arrays.asList(("".split(String.valueOf(word))));
if(word.indexOf(guessedLetter) != -1) {
letters.get(word.indexOf(guessedLetter)).equals(word.get(word.indexOf(guessedLetter)));
wordDisplay.setText(" ".join(String.valueOf(letters)));
verify.setText("Correct");
}
else {
verify.setText("Incorrect");
}
}
}
Вот как выглядит мой основной интерфейс.Кнопка bLoad загружает дисплей, на котором (в данном случае слово «угадай») _ _ _ _ _ (wordDisplay).Кнопка bCheck предназначена для проверки, присутствует ли слово guessedLetter и, если да, заменит правильную букву.
Интерфейс
Вот мой журнал ошибок: -
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.henry.hangman, PID: 10847
java.lang.IllegalStateException: Could not execute method for android:onClick
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:390)
at android.view.View.performClick(View.java:6597)
at android.view.View.performClickInternal(View.java:6574)
at android.view.View.access$3100(View.java:778)
at android.view.View$PerformClick.run(View.java:25885)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385)
at android.view.View.performClick(View.java:6597)
at android.view.View.performClickInternal(View.java:6574)
at android.view.View.access$3100(View.java:778)
at android.view.View$PerformClick.run(View.java:25885)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by: java.util.regex.PatternSyntaxException: Missing closing bracket in character class near index 2
[]
^
at java.util.regex.Pattern.compileImpl(Native Method)
at java.util.regex.Pattern.compile(Pattern.java:1344)
at java.util.regex.Pattern.<init>(Pattern.java:1328)
at java.util.regex.Pattern.compile(Pattern.java:950)
at java.lang.String.split(String.java:2455)
at java.lang.String.split(String.java:2497)
at com.henry.hangman.MainScreen.bCheckClick(MainScreen.java:137)
... 13 more
Мне удалось создать замену букв в Python -
word = "guess"
letters = ['_' for i in range(len(word))]
while True:
guess = input()
if guess in word:
letters[word.index(guess)] = word[word.index(guess)]
print("".join(letters))