Stack Overflow на русском Asked on November 7, 2021
Попытался составить код, который будет выдавать в консоли сколько определённых символов, в моём случае букв "о", содержит файл в формате txt. Помогите, пожалуйста, его оживить 🙂
package org.apache.commons.io;
package ua.com.prologistic;
import java.util.regex.Matcher;
import java.io.*;
import java.util.regex.Pattern;
public class main {
public static void main(String[] args) {
try(FileReader reader = new FileReader("C:\Мои файлы\text.txt"))
{
int c;
while((c=reader.read())!=-1){
System.out.print((char)c);
}
}
catch(IOException ex){
System.out.println(ex.getMessage());
}
}
public class main {
/**
* @param args
*/
public void main(String[] args) {
// TODO Auto-generated method stub
String s = "";
Pattern pattern = Pattern.compile("о");
Matcher matcher = pattern.matcher(s);
int n = 0;
while (matcher.find()) {
System.out.println(matcher.group());
n++;
}
System.out.println("N = " + n);
}
}
P.S. Прошу побольше объяснений. Спасибо!
Можно это сделать функционально (быстро, дешево и сердито):
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.stream.Stream;
public class Main {
public static void main(String args[]) throws IOException {
String fileName = "text.txt";
String letter = "o";
System.out.println(letterCounter(fileName, letter));
}
public static long letterCounter(String fileName, String letter) throws IOException {
try (Stream<String> stream = Files.lines(Paths.get(fileName),Charset.defaultCharset())) {
return stream.flatMap(line -> Arrays.stream(line.split("")))
.filter(l -> l.equals(letter))
.count();
}
}
}
Answered by Дмитрий on November 7, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP