int count = 0;
for (int i =0; i <8635; i++){
  
    try {
        line = Files.readAllLines(Paths.get("wordlist.txt")).get(i);
        if (GridWords.contains(line)){
            count++;
        }
        if (count > 1) { 
        ChoseRandomWord(randomword );
        RemoveTheSimilarLetters(randomword, letters25 );
        CreateTheGridContents(letters25, GridMap1, GridMap2);
        ValidationOfTheGrid(GridMap1, GridMap2);
        AskingTheUser(GridMap1, GridMap2);
        
        }
    } catch (IOException e) {
        System.out.println(e);
    }

}

मैं यह जांचने की कोशिश कर रहा हूं कि मैंने जो किया वह सही तरीका है और प्रोग्राम को निष्पादित करते समय यह संकलक को धीमा क्यों करता है।

0
mohamed abubeker 7 जिंदा 2022, 12:35
1
सबसे पहले आप लूप को Files.readAllLines(Paths.get("wordlist.txt")) पहले ले जाएं। वर्तमान में आप प्रत्येक लूप पुनरावृत्ति पर थोड़ी देर फ़ाइल पढ़ते हैं।
 – 
f1sh
7 जिंदा 2022, 12:42
आपको if (count > 1) { को लूप के बाहर भी ले जाना चाहिए। आप पहले गिनना चाहते हैं और गिनती पूरी करने के बाद काउंटर का मूल्यांकन करना चाहते हैं, है ना?
 – 
f1sh
7 जिंदा 2022, 12:44
1
वैसे भी वह लूप क्यों है? आप लूप के अंदर काउंटर वेरिएबल i के साथ कुछ भी नहीं कर रहे हैं। और इसकी हालत i <8635 क्यों है? उस 8635 अंक का क्या महत्व है?
 – 
OH GOD SPIDERS
7 जिंदा 2022, 12:44
फ़ाइल में 8635 लाइनें हैं और हाँ मैंने लूप के बाहर if (गिनती> 1) { को स्थानांतरित कर दिया है। मेरे पास अभी भी प्रदर्शन समस्या है। धन्यवाद
 – 
mohamed abubeker
7 जिंदा 2022, 12:49

1 उत्तर

सबसे बढ़िया उत्तर

मुझे संदेह है कि आप ऐसा कुछ चाहते हैं:

int count = 0;
List<String> lines;
try {
    lines = Files.readAllLines(Paths.get("wordlist.txt"));
} catch(IOException e) {
    e.printStackTrace();
    lines = Collections.emptyList();
    // or return;
}
for (int i =0; i < lines.size(); i++){
    String line = lines.get(i);
    if (GridWords.contains(line)){
        count++;
    }
}
if (count > 1) {
    ChoseRandomWord(randomword);
    RemoveTheSimilarLetters(randomword, letters25 );
    CreateTheGridContents(letters25, GridMap1, GridMap2);
    ValidationOfTheGrid(GridMap1, GridMap2);
    AskingTheUser(GridMap1, GridMap2);
}

यह पहले ग्रिडवर्ड्स की गणना करता है, फिर शेष तर्क करता है। हालांकि आपका कोड यह सुनिश्चित करने के अलावा count के साथ कुछ नहीं कर रहा है कि कम से कम 2 शब्द मिले हैं।

2
f1sh 7 जिंदा 2022, 13:00
धन्यवाद। मैं इसे आजमा रहा हूं। मुझे अभी भी IOException के लिए दूसरी पंक्ति के बारे में कुछ करना है
 – 
mohamed abubeker
7 जिंदा 2022, 12:57
सच है, मैंने अपवाद हैंडलिंग को छोड़ दिया। केवल एक चीज जो फेंकती है वह है readAllLines। फ़ाइल को पढ़ने में विफल होने पर आपको यह तय करना होगा कि मैं जवाब अपडेट कर दूंगा।
 – 
f1sh
7 जिंदा 2022, 12:59
धन्यवाद दोस्त। मैं इसकी सराहना करता हूं।
 – 
mohamed abubeker
7 जिंदा 2022, 13:03
यदि आप अपनी सभी समस्याओं का समाधान करते हैं तो आप इस उत्तर को ऊपर उठा सकते हैं और/या स्वीकार कर सकते हैं :)
 – 
f1sh
7 जिंदा 2022, 13:05