استفاده از آرایه ها
با سلام خدمت دوستان.
توی پروژه Hangman که استاد طراحی کردند اگر توی اکتیویتیمون دوتا text بزاریم و بخوایم بگیم text1 یک راهنمایی بنویسه (مثلا پایتخت ایران کدام شهر است) و text2 جواب سوال باشه که میشه همون کلمه ای که کاربر با کیبورد مجازی وارد میکنه.ولی خب text1 و text2 باید طبق خونه ارایه که random هست با هم یکی باشند تا سوال و جواب باهم جور در بیاد.
توی این قسمت مشکل دارم که چجوری این دوتا آرایه خونه هاشون باهم برابر باشه که ار آرایه اول که سوال خونده میشه آرایه دوم هم جواب همون سوال باشه.
ممنون میشم کمک کنید.
باتشکر.
شما یه فیلد دارید به اسم currentWord که جواب توشه. یه فیلد دیگه هم بسازید به اسم currentQuestion. حالا وقتی که currentWord مقدار دهی میشه کدشو پاک کنید و کد زیر رو بجاش بنویسید:
int random = (int) (Math.random() * words.lenght);
currentWord = words[random];
currentQuestion = questions[random]; // questions = آرایه ی سوال هاتون
توجه داشته باشید که اگه عنصر دوم آرایه ی words تهران باشه عنصر دوم آرایه ی questions باید پایتخت ایران چیست؟ باشه.
باسلام.
دوست عزیز سپاسگذارم بابت پاسخ.
ولی من متوجه نشدم منظورتون از فیلد متد هست یا چیز دیگه؟
کد بنده اینه.من میخوام یه آرایه دیگه مثل words داشته باشم که سوالات داخل آرایه باشه.شما میگید یه متد دیگه مثل selectword بنویسم یا کد ها رو داخل همین آرایه بنویسم؟(متوجه نشدم).
ممنون از پاسخ شما.
private String selectWord(){
String[] words = {"ایران", "شیراز", "فارس"};
int randomIndex = (int) (Math.random() * words.length);
return words[randomIndex];
}
شما باید دو تا فیلد از جنس String به اسم های currentWord و currentQuestion بسازید و بعد متدی که نوشتید رو پاک و متد زیر رو به جاش بنویسید:
private void selectWord() { String[] words = new String[] {"ایران", "شیراز", "فارس"}; String[] questions = new String[] {"تخت جمشید کجاست؟", "", ""}; int randomIndex = (int) (Math.random() * words.length); currentWord = words[randomIndex];
currentQuestion = questions[randomIndex]; }
حالا بعد از صدا زدن این متد فیلد currentWord کلمه ی جواب رو در بر داره و فیلد currentQuestion سوال رو توی خودش داره.
باسلام
معذرت میخوام که مجدد مزاحمتون میشم ولی مشکل حل نشد
چون متدی که شما فرمودید تعریف کنم از نوع void هست که معمولا خروجی قرار نیست بده به ما ولی متدی که توی برنامه به کار رفته از نوع string هست که خروجی این متد را ما لازم داریم.
کد برنامه بنده به این صورت شده ولی کماکان مشکل داره.
تشکر بابت همکاری و راهنمایی شما.
//field definition
private String currentWord;
private String currentQuestion;
//Select Word And Store Dashed Version
selectedWord = selectWord();
wordDashed = getDashWord(selectedWord);
//Method definition
private String selectWord() {
String[] words = {"تهران","شیراز"};
String[] questions = {"پایتخت ایران","مرکز فارس"};
int randomIndex = (int) (Math.random() * words.length);
currentWord = words[randomIndex];
currentQuestion = questions[randomIndex];
}
سلام ، چون متغیر currentWord یک فیلد هست و داری داخل متد مقدار دهی میکنی ، نیاز نیست متد خروجی داشته باشه ، چون فیلد داخل متد مقدارش رو میگیره . برای همین نوع خروجی رو حذف کن و متد selectWord رو فقط صدا بزن ( متغیر selectedWord هم حذف کن چون currentWord داری ) :
//field definition
private String currentWord;
private String currentQuestion;
//Select Word And Store Dashed Version
selectWord();
wordDashed = getDashWord(currentWord);
//Method definition
private void selectWord() {
String[] words = {"تهران","شیراز"};
String[] questions = {"پایتخت ایران","مرکز فارس"};
int randomIndex = (int) (Math.random() * words.length);
currentWord = words[randomIndex];
currentQuestion = questions[randomIndex];
}
یا میشه اینطوری نوشت ( متد دارای خروجی ) :
//field definition
private String currentWord;
private String currentQuestion;
//Select Word And Store Dashed Version
currentWord = selectWord();
wordDashed = getDashWord(currentWord);
//Method definition
private String selectWord() {
String[] words = {"تهران","شیراز"};
String[] questions = {"پایتخت ایران","مرکز فارس"};
int randomIndex = (int) (Math.random() * words.length);
currentQuestion = questions[randomIndex];
return words[randomIndex];
}
این دو روش فرقی با هم نداره ، نتیجش یکیه .
ممنونم دوست عزیز.
حالا یه text view با آی دی txt_word دارم که کلمه رو داخلش نشون میده و یه دونه هم txt_question که قراره سوال توش قرار بگیره.
در رابطه مقداردادن txt_question به آرایه سوال ها را هنماییم کنید.ممنون میشم.
مقدار دهی برای کلمه به صورت زیر است:
بازم ممنون بابت راهنماییتون.
// Select Word And Store Dashed Version
selectedWord = selectWord();
wordDashed = getDashWord(selectedWord);
// Initialize UI
txt_word.setText(wordDashed);
خب درسته من هم اینکارو انجام داده بودم ولی الان txt_question سوال رو انتخاب میکنه و در txt_word به ازای جواب "-" میزاره ولی وقتی روی کیبورد مجازی زده میشه حروف مربوطه در جای خودش قرار نمیگیره و به ازای هر حرف یه بار به دفعات اشتباه اضافه میشه.یعنی چه درست باشه چه اشتباه بعد از 8 بار خارج میشه.در این قسمت worddashed = getdashword قرار گرفته که getdashword خودش یه متد هست که میاد به ازای کلمه "-" قرار میده.آیا برای question هم باید متد جدا تعریف بشه؟ممنون میشم راهنمایی کنید.ممنون از راهنماییاتون.
باسلام.
دوستان عزیز بنده در رابطه با سوال بالا همچنان مشکل دارم و به نتیجه نرسیدم.ممنون میشم یاری کنید.هرچقدر هم کد رو چک میکنم به نظرم درسته و مشکلی نداره
ولی کماکان کلمات ازکیبورد مجازی در text کلمه بجای دش ها نمیشینه.
بازم ممنون و معذرت.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .