بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
(دوستان لطفا راهنمایی کنین)اشکال دربرنامه نویسی بازی Hangman
باعرض سلام خدمت کلیه دوستان
بازی hangmanراتا اخر نوشتم و به مشکل برخوردم وبرنامه کرش می کنه.حروفی که غلط هست رانمایش نمیده ولی حروف صحیح را نمایش میده.
لینک دانلود سورس را گذاشتم
لطفا راهنمایی کنین .
باتشکر
+1
0
بهتر بود شات از لاگ برنامه میذاشتی که حصوله خوندن کد داره یه شات از لاگ کت بزار تا ببینیم که علت کرش چیه (10 سال پیش)
0
0
شات لاگ کت را گذاشتم.
(10 سال پیش)
+1
0
خط 84 برنامت مشکل داره اونجایی که تو لاگ کت نام پکیجت رو نوشته کلیک کن مستقیم میری رو خطی که خطا داره و این چیزی که من فهمیدم داری مقداری که داخل آرایه نیست رو میخونی که همچین اندیسی تو آرایه وجود نداره. مطمئن نیستم یه چک بکنید (10 سال پیش)
0
0
توی خط 84 شما دارید یک Index از آرایه رو میگیرید که از تعداد اون آرایه بیشتر هست (10 سال پیش)
0
0
دوستان مشکلم حل نشد.چطوری می تونم سورس کدش را اپلود کنم؟ (10 سال پیش)
+1
0
کد خودتون رو با سورس کد استاد مقایسه کنید و میتونید این کد رو تو یه سرور رایگان مثل پرشین گیگ و پیکوفایل upload کنید و لینکش رو بدید به دوستان (10 سال پیش)
0
0
لینک دانلود سورس را قرار دادم.لطفا راهنمایی کنین. (10 سال پیش)
0
0
دوستان لطفا راهنمایی کنین (10 سال پیش)
برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال
HoCoder
10 سال پیش
+1
0
سلام
من کد شما اول تست نکردم و کد رو کمی اصلاح کردم و تست هم شده ازش استفاده کنید
public class MainActivity extends Activity {
public String[] words = {
"hello" ,
"goodbye" ,
"bycicle" ,
"massage" ,
"hangman"
};
public String currentWord;
public TextView txtDashes;
public TextView txtWrong;
public Button btnNewGuess;
public ArrayList<Button> invisibleButton = new ArrayList<Button>();
public int nWrong;
public int nCorrect;
@Override
protected void onCreate( Bundle savedInstanceState ) {
super.onCreate( savedInstanceState );
setContentView( R.layout.main );
txtDashes = (TextView) findViewById( R.id.txtDashes );
txtWrong = (TextView) findViewById( R.id.txtWrong );
btnNewGuess = (Button) findViewById( R.id.btnNewGuess );
btnNewGuess.setOnClickListener( new OnClickListener() {
@Override
public void onClick( View v ) {
resetGame();
}
} );
resetGame();
}
public void resetGame() {
int randomNumber = (int) ( Math.random() * words.length );
currentWord = words[randomNumber].toLowerCase();
String dashes = "";
String spaces = "";
for ( int i = 0 ; i < currentWord.length() ; i++ ) {
dashes += "-";
spaces += " ";
}
txtDashes.setText( dashes );
txtWrong.setText( spaces );
for ( Button btn : invisibleButton ) {
btn.setVisibility( View.VISIBLE );
}
invisibleButton.clear();
nCorrect = 0;
nWrong = 0;
}
public void letterOnClickListener( View view ) {
Button btn = (Button) view;
btn.setVisibility( View.INVISIBLE );
invisibleButton.add( btn );
char letter = btn.getText().toString().toLowerCase().toCharArray()[0];
if (currentWord.contains( "" + letter )) {
char[] dashesArray = txtDashes.getText().toString().toCharArray();
char[] charArray = currentWord.toCharArray();
for ( int i = 0 ; i < charArray.length ; i++ ) {
if (charArray[i] == letter) {
dashesArray[i] = letter;
nCorrect++;
}
}
txtDashes.setText( new String( dashesArray ) );
if (nCorrect == currentWord.length()) {
Toast.makeText( MainActivity.this , "You Win!" , Toast.LENGTH_SHORT ).show();
resetGame();
return;
}
} else {
if (nWrong >= currentWord.length() - 1) {
Toast.makeText( MainActivity.this , "You lose!" , Toast.LENGTH_SHORT ).show();
resetGame();
return;
}
char[] charArray = txtWrong.getText().toString().toCharArray();
charArray[nWrong] = letter;
txtWrong.setText( new String( charArray ) );
nWrong++;
}
}
}
پاسخ به سوال
Reza
10 سال پیش
+1
0
سلام
کل مشکل به خاطر این بود که برنامت یه فاصله کم داشت ، از روی Log میتونستی بفهمی ، گفته که در خط 103 خطای اندیس داری :
chararray[nwrong] = letter;
chararray طولش صفره ، و شما اندیس صفرم رو میخواید . چرا طولش صفره ؟ چون مقدار string خالیه و string هم همون مقدار txtwrong هست :
String string = txtwrong.getText().toString();
char[] chararray = string.toCharArray();
حالا txtwrong چرا خالیه چون اون بالا در متغییر spaces یه فاصله کم گذاشتی و طولش صفر شده
اصلاح شده :
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .