# فناوری جاوا > برنامه‌نویسی جاوا >  حذف حروف اضافه کلمات

## shabgardetanha

سلام
برای حذف حروف اضافه این کد رو دیدم اما نمیدونم چطور ورودی بهش بدم(فایل تکست)
و دیکشنری چی میخواد؟
چطور توی این خط فایل ورودی متنی بدم؟
 BufferedReader inputReader = new BufferedReader(new InputStreamReader(System.in));
ممنون میشم

----------


## shabgardetanha

﻿   سلام من فایل رو خوندم کلمات رو در متغییر 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

سلام
یک جمله رو بهش دادم بعد اسپلیت کردم و کلمات رو بهش دادم اما در خروجی میگه برای هیچ کدوم پیشنهاد نداره و تشخیص نمیده..

 تورو خدا یکی کمک کنه . دیگه نمیدونم چطوری بنویسم بشه...
؟؟؟؟
 :خیلی عصبانی:  :اشتباه:  :گریه:

----------


## shabgardetanha

سلام
خواهش میکنم کمکم کنید
هرکاری میکنم درست نمیشه...
خواهش...

----------


## vahid-p

همونطور که تاپیک قبلی هم گفتم کد نویسیتون مشکل داره و اینکه دنبال حذف کلمات و دیکشنری و... بودید، یعنی بدون گذروندن پیشنیازها میخواید برید یه مطلب پیشرفته تر رو یادبگیرید که نمیشه. برای همینم چیزهایی که گفتم به دردتون نخورده.

فرض کنیم اون لینکی که دادید، رو نخونده باشم و بر حسب کدی که نوشتی قضاوت کنم.
چند نکته:
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

سلام
ظاهرا به جز شما کسی در تالار جاوا راهنمایی نمیکنه..
ممنون
بله من متوجه کد شدم ازش اجرا گرفتم برای متن ورودی تایپ شده
اما من میخوام یک جمله رو بهش در قالب ارایه بدم و بعد برای هر کلمه جمله، پیشنهاد رو نمایش بده
خیلی سرچ کردم
جمله رو در قالب ارایه دادم بهش، خوند، اما در جواب برای هر کلمه پیغام "No suggestion" داد. که دلیلش رو نمیدونم.
برای همین با توجه به لینک کد و هدفم چند بار پرسیدم اما کسی راهنمایی نکرد. من جاوا رو مبتدی هستم و الان در زمان کم برای این هدف بهش نیاز دارم.
ممنون میشم راهنمایی کنید. 
یا اگه ممکنه ایمیل تون رو بدید کدم رو ارسال کنم ببینید.
یا خودتون به شیوه خودتون لطف کنید و بگید باید چطور برای هدفم کد رو تغییر بدم.
ممنون

----------


## vahid-p

گفتم که چطور آرایه رو بخونید. 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

سلام
خیلی ممنون از لطف تون
ممنونم
یه دنیا ممنون
من در یک فایل متنی صد تا جمله دارم
برنامه براش اجرا شد
حالا چطور برای هر جمله آنهایی که suggestion داشتن رو suggestion رو در قالب  جمله  برای هر جمله در یک فایل جدید متنی بنویسم؟ 
یعنی بدون پیشنهاد ها رو از هر جمله پاک کنم و جمله درست بدون کلمات بدون پیشنهاد،  رو بریزم در یک فایل متنی دیگه 
امکان داره؟
من اومدم با یه if گفتم آنهایی که suggestion بودند بنویس در یک فایل اما نشد . همه suggestion ها رو نوشت . برای هر جمله در یک سطر ننوشت.ریختم در ارایه ولی فقط کلمه آخر رو نوشت
ممنون میشم بزرگواری کنید و اینو هم راهنمایی کنید.  دعاگوی شما هستم.

----------


## shabgardetanha

سلام
این طوری نوشتم خطا داره
نمیدونم به جاوا چطور بنویسم
ممنون میشم راهنمایی بفرمایید

----------


## shabgardetanha

سلام

برای تک تک جملات پیشنهاد رو میده حالا میخوام بدون پیشنهاد ها رو از جمله حذف کنم اما نمیشه...

ممنون میشم راهنمایی کنید راهنمایی کنید

----------


## shabgardetanha

سلام .

چکار کنم مقادیر null ؟حذف بشه و جمله اخر بدون نال نمایش داده بشه
خواهش میکنم راهنمایی کنید.

----------


## ghamgin

سلام
من از این کد لینک داده شده برای چک کردن اسپل استفاده کردم
اما وقتی توی یک کلمه آخرش e داشته باشه و ننویسیم یه کلمه دیگه پیشنهاد میده. 
مثلا 
House
رو بنویسیم hous این طوری میشه
Hous--> hoes

کسی میدونه چطور میشه درستش کرد؟

----------

