मैं अपने पुनरावर्तक में hasNext() विधि को लागू करने का प्रयास करता हूं।

public boolean hasNext() {
       filename = this.fileContent.getFileName();
       int charLineSize = 0;
       Scanner in = null;
       ArrayList<Character> charList = new ArrayList<>

       try(Scanner scanner = new Scanner(new BufferedReader(new FileReader(filePath)))) {

           while (scanner.hasNextLine()) {
               String line = scanner.nextLine();
               charLineSize = line.split("\\s+").length;
               String wordsline = line.split("\\s+").toLowerCase();
               charList.addAll(new ArrayList<>(wordsline.chars().mapToObj(c -> (char) c).collect(Collectors.toList())));
            }
        } catch(FileNotFoundException e) {
            System.out.println(e);
        }
        if (index < charLineSize) {
          return true;
        } else {
          return false;
        }
   }

    public String next() {
       if (hasNext()) {
           return charList.get(index++);
       } else {
           return null;
       }
    }

सबसे पहले, मैंने लाइन को यहां वर्णों में विभाजित किया है। क्या यह सभी वर्णों को charList में संग्रहीत करने और स्कैनर के प्रत्येक पंक्ति के माध्यम से जाने के बाद इसे अपडेट करने का सही तरीका है?

मैं नेक्स्ट() विधि में विशिष्ट चार प्राप्त करना चाहता हूं।

-1
JeyKey 11 सितंबर 2017, 12:16
आप सीधे लाइनों को चार में विभाजित क्यों नहीं करते हैं और उन्हें .toCharArray () का उपयोग करके चार [] सरणी में डाल देते हैं?
 – 
Debabrata
11 सितंबर 2017, 12:21

2 जवाब

उन्हें वर्णों में कैसे विभाजित करें?

line.toCharArray()

दूसरा, जब मैं ऐसा करता हूं, तो प्रत्येक पंक्ति के बाद वर्णों की सामग्री को char[] सरणी में कैसे जोड़ा जाए?

आप नहीं कर सकते हैं। एक बार एक सरणी बन जाने के बाद, आप उसका आकार नहीं बदल सकते। इसका मतलब है कि आपको पहले से ही वर्णों की कुल मात्रा जानने की जरूरत है, जो शायद ऐसा नहीं है।

array को उन वर्णों की सूची के रूप में घोषित करें जिन पर आप array.add(char) कॉल कर सकते हैं।

List<Character> array = new ArrayList<>();
0
Luciano van der Veekens 11 सितंबर 2017, 12:27

चार सरणी में कनवर्ट करने के लिए, और सामग्री जोड़ने के लिए आप निम्न विधियों का उपयोग कर सकते हैं:

  1. चार सरणी में कनवर्ट करना:

    line.toCharArray()

  2. चार सरणी से सूची प्राप्त करना:

    ArrayList<Character> charList = new ArrayList<>(line.chars().mapToObj(c -> (char) c).collect(Collectors.toList()));

  3. सामग्री जोड़ने के लिए:

    charList.add(c);

0
Chinmay jain 11 सितंबर 2017, 12:32
शुक्रिया। लेकिन प्रत्येक पंक्ति के बाद इस सामग्री को कैसे जोड़ा जाए? यहाँ मैं इसे एक बार charList की घोषणा के दौरान करता हूँ।
 – 
JeyKey
11 सितंबर 2017, 12:51
इसके लिए आप charList.addAll(new ArrayList<>(line.chars().mapToObj(c -> (char) c).collect(Collectors.toList()))); का इस्तेमाल कर सकते हैं
 – 
Chinmay jain
11 सितंबर 2017, 12:56
लेकिन सटीक कहाँ? कृपया मेरा कोड फिर से देखें। मैंने इसे अपडेट किया। क्या अभी ऐसा होना चाहिए? अंत में लूप के अंदर?: charList.addAll(new ArrayList<>(words.chars().mapToObj(c -> (char) c).collect(Collectors.toList())));
 – 
JeyKey
11 सितंबर 2017, 13:05
char[] words = wordsline.toCharArray(); charList(line.chars().mapToObj(c -> (char) c).collect(Collectors.toList())); charList.add(c); के बजाय, charList.addAll(new ArrayList<>(wordsline.chars().mapToObj(c -> (char) c).collect(Collectors.toList()))); का उपयोग करें
 – 
Chinmay jain
11 सितंबर 2017, 13:10
आपका बहुत बहुत धन्यवाद। मैं फिर से कोड अपडेट करूंगा। लेकिन क्या अगला () तरीका सही है?
 – 
JeyKey
11 सितंबर 2017, 13:12