View Full Version : حذف حروف اضافه کلمات
shabgardetanha
یک شنبه 02 اردیبهشت 1397, 11:05 صبح
سلام
برای حذف حروف اضافه این کد رو دیدم اما نمیدونم چطور ورودی بهش بدم(فایل تکست)
و دیکشنری چی میخواد؟
چطور توی این خط فایل ورودی متنی بدم؟
BufferedReader inputReader = new BufferedReader(new InputStreamReader(System.in));
ممنون میشم
shabgardetanha
یک شنبه 02 اردیبهشت 1397, 17:20 عصر
سلام من فایل رو خوندم کلمات رو در متغییر word ریختم حالا چطور باید به کد اعمالش کنم؟
خطا داره نمیتونم string رو درreader بریزم.
کسی راهی سراغ داره؟
میخوام کلمات جمله matn رو درست کنه و جمله رو درست بنویسه
String matn="i am studenttt"
String mistake;
String[] words = matn.split("\\(");
BufferedReader inputReader = new BufferedReader(new InputStreamReader(word));
while((mistake = inputReader.readLine()) != null)
{
found = false;
suggestion = "NO SUGGESTION";
System.out.print("> ");
System.out.println(mistake);
mistake = mistake.toLowerCase();
mistake = removeTripleRepeat(mistake);
if(checkIfDouble(mistake))
checkRepeatLetters(mistake,0,0);
else
checkVowels(mistake,0);
System.out.println(suggestion);
}
shabgardetanha
دوشنبه 03 اردیبهشت 1397, 08:34 صبح
سلام
یک جمله رو بهش دادم بعد اسپلیت کردم و کلمات رو بهش دادم اما در خروجی میگه برای هیچ کدوم پیشنهاد نداره و تشخیص نمیده..
تورو خدا یکی کمک کنه . دیگه نمیدونم چطوری بنویسم بشه...
؟؟؟؟
:عصبانی++::اشتباه::گریه:
shabgardetanha
سه شنبه 04 اردیبهشت 1397, 10:18 صبح
سلام
خواهش میکنم کمکم کنید
هرکاری میکنم درست نمیشه...
خواهش...
vahid-p
سه شنبه 04 اردیبهشت 1397, 16:50 عصر
همونطور که تاپیک قبلی هم گفتم کد نویسیتون مشکل داره و اینکه دنبال حذف کلمات و دیکشنری و... بودید، یعنی بدون گذروندن پیشنیازها میخواید برید یه مطلب پیشرفته تر رو یادبگیرید که نمیشه. برای همینم چیزهایی که گفتم به دردتون نخورده.
فرض کنیم اون لینکی که دادید، رو نخونده باشم و بر حسب کدی که نوشتی قضاوت کنم.
چند نکته:
1- برای پیمایش یک آرایه اومدید از bufferreader استفاده کردید و به inputstreamreader یک آرایه دادید که اشتباهه!! برای پیمایش آرایه کارهای خیلی ساده تری هست:
for(int i=0;i<words.length;i++){ System.out.println(words[i]);
}
یا
for(String word:words){ System.out.println(word);
}
2- در if و حتی else دو عبارت checkRepeatLetters(mistake,0,0); و checkVowels(mistake,0); استفاده کردید که از خروجیش هیچ استفاده ای نشده. همچنین هیچ کدوم از توابع قرار داده نشده، پس خواننده چطور میخواد بفهمه قراره چیکار کنن. طبق معنی متدها وقتی مینویسید check انتظار داریم خروجی یک boolean باشه که بگه فلان شرایط رو داره یا نه. خب چنین خروجی که استفاده ای ازش نشده و مثل اینه هیچ کاری نکنه. مگر اینکه داخل متد یه سری اطلاعات جای دیگه ای چاپ یا ذخیره کنه که اونوقت با معنی check خیلی جور در نمیاد!
3- نمیدونم word در inputstreamreader چرا اشتباه تایپی داره اگر کپی-پیست کردید باید این خطا رو خودتون موقع کامپایل حداقل متوجه میشدید هر چند IDE هم بهتون میگه قبلش.
اما اگر لینکی که دادید رو در نظر بگیرم، شما اون کد رو احتمالا متوجه نشدید یا خوب وقت نذاشتید برای فهمیدنش. هر چند به نظر من خیلی بد نوشته، با این حال suggestion یک متغیر سراسری برای این کلاس هست و در متدهای دیگه مقدار دهی میشه که اصلا کار جالبی نیست در کدنویسی.
با این حال کدی که در اون لینک اومده یک فایل تکست میخواد که هر خط اون فایل یک کلمه باشه و این کلمات میشن دیکشنری شما (آدرسشم تو کد میتونی مثلا بدی C:\\words.txt). با اجرای کد اون فایل رو میخونه و یه مجموعه کلامات در dict ایجاد میکنه و این معیار صحت کلمات میشه. بعدش کافیه با کیبورد کلمه وارد کنی، اینتر بزنی و نتیجه رو بهت بگه و همینطور این کار رو تکرار میکنه.
-- اما خارج از بحث برنامه نویسی ---
یکی دو روزه این پست رو میبینم و نمیخواستمم جواب بدم ولی گفتم شاید متوجه نباشید مشکل کار از کجاست. همچنین وقتی کدی برای تحلیل میذارید باید اطلاعات لازم رو داشته باشه. همچنین مهمتر از اینها صورت مسئله به صورت واضح شرح داده شده باشه. مثلا "میخوام کلمات جمله matn رو درست کنه و جمله رو درست بنویسه" جمله کاملا غیردقیقی هست، اصلا تعریف درست یعنی چی؟ همینکه حروف تکراری رو حذف کنه که قبلا بحث شد، در اینجا فقط حذف حروف تکرار نیست!. یا جمله "یک جمله رو بهش دادم بعد اسپلیت کردم و کلمات رو بهش دادم اما در خروجی میگه برای هیچ کدوم پیشنهاد نداره و تشخیص نمیده" هم همونطور. وقتی شرح دقیق نباشه، هر کسی یه برداشتی داره و کلی باید وقت و پست بعد پست ارسال بشه تازه مخاطب متوجه بشه سوال چیه.
به هر حال این راهنمایی من بود و از نظر کدنویسی قصد مشارکت در این تاپیک رو ندارم، چون معتقدم بحث ها باید پایه ای تر باشه.
shabgardetanha
سه شنبه 04 اردیبهشت 1397, 22:09 عصر
سلام
ظاهرا به جز شما کسی در تالار جاوا راهنمایی نمیکنه..
ممنون
بله من متوجه کد شدم ازش اجرا گرفتم برای متن ورودی تایپ شده
اما من میخوام یک جمله رو بهش در قالب ارایه بدم و بعد برای هر کلمه جمله، پیشنهاد رو نمایش بده
خیلی سرچ کردم
جمله رو در قالب ارایه دادم بهش، خوند، اما در جواب برای هر کلمه پیغام "No suggestion" داد. که دلیلش رو نمیدونم.
برای همین با توجه به لینک کد و هدفم چند بار پرسیدم اما کسی راهنمایی نکرد. من جاوا رو مبتدی هستم و الان در زمان کم برای این هدف بهش نیاز دارم.
ممنون میشم راهنمایی کنید.
یا اگه ممکنه ایمیل تون رو بدید کدم رو ارسال کنم ببینید.
یا خودتون به شیوه خودتون لطف کنید و بگید باید چطور برای هدفم کد رو تغییر بدم.
ممنون
vahid-p
چهارشنبه 05 اردیبهشت 1397, 10:32 صبح
گفتم که چطور آرایه رو بخونید. split رو هم تو کدتون اشتباه نوشتید.
به هر حال فقط متد main از اون لینک رو تغییر دادم:
public static void main(String[] args) throws IOException {
//Read in file containing words into memory
String line;
InputStream fis = new FileInputStream("D:\\words.txt");
BufferedReader dictReader = new BufferedReader(new InputStreamReader(fis, Charset.forName("UTF-8")));
//contains all words from file
//hashset is O(1) or O(log n) time for contains()
dict = new HashSet();
while ((line = dictReader.readLine()) != null)
{
//build dictionary
dict.add(line);
}
// Done with the file
dictReader.close();
dictReader = null;
fis = null;
//Read misspelled words
String sentence = "I am a studenttt";
String words[] = sentence.split("\\s+");
for(String mistake:words){
//reset to allow dictionary search
found = false;
suggestion = "NO SUGGESTION";
//prompt for misspelled word
System.out.print("> ");
System.out.println(mistake);
//never need Upper case characters
mistake = mistake.toLowerCase();
//no english words have 3 repeated chars... pretty sure
mistake = removeTripleRepeat(mistake);
//find suggestion
if(checkIfDouble(mistake))
checkRepeatLetters(mistake,0,0);
else // don't need to check repeat letters if there are none
checkVowels(mistake,0);
System.out.println(suggestion);
}
}
فایل کلماتم رو اینا وارد کردم:
i
am
student
good
god
well
wake
sheep
shop
hope
خروجی اجرا:
> I
i
> am
am
> a
i
> studenttt
student
shabgardetanha
چهارشنبه 05 اردیبهشت 1397, 17:24 عصر
سلام
خیلی ممنون از لطف تون
ممنونم
یه دنیا ممنون
من در یک فایل متنی صد تا جمله دارم
برنامه براش اجرا شد
حالا چطور برای هر جمله آنهایی که suggestion داشتن رو suggestion رو در قالب جمله برای هر جمله در یک فایل جدید متنی بنویسم؟
یعنی بدون پیشنهاد ها رو از هر جمله پاک کنم و جمله درست بدون کلمات بدون پیشنهاد، رو بریزم در یک فایل متنی دیگه
امکان داره؟
من اومدم با یه if گفتم آنهایی که suggestion بودند بنویس در یک فایل اما نشد . همه suggestion ها رو نوشت . برای هر جمله در یک سطر ننوشت.ریختم در ارایه ولی فقط کلمه آخر رو نوشت
ممنون میشم بزرگواری کنید و اینو هم راهنمایی کنید. دعاگوی شما هستم.
shabgardetanha
پنج شنبه 06 اردیبهشت 1397, 10:18 صبح
سلام
این طوری نوشتم خطا داره
نمیدونم به جاوا چطور بنویسم
ممنون میشم راهنمایی بفرمایید
shabgardetanha
جمعه 07 اردیبهشت 1397, 09:41 صبح
سلام
برای تک تک جملات پیشنهاد رو میده حالا میخوام بدون پیشنهاد ها رو از جمله حذف کنم اما نمیشه...
ممنون میشم راهنمایی کنید راهنمایی کنید
shabgardetanha
شنبه 08 اردیبهشت 1397, 10:38 صبح
سلام .
چکار کنم مقادیر null ؟حذف بشه و جمله اخر بدون نال نمایش داده بشه
خواهش میکنم راهنمایی کنید.
ghamgin
یک شنبه 09 اردیبهشت 1397, 13:01 عصر
سلام
من از این کد لینک داده شده برای چک کردن اسپل استفاده کردم
اما وقتی توی یک کلمه آخرش e داشته باشه و ننویسیم یه کلمه دیگه پیشنهاد میده.
مثلا
House
رو بنویسیم hous این طوری میشه
Hous--> hoes
کسی میدونه چطور میشه درستش کرد؟
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.