Co zrobilibyście lepiej ??
package pliki;
/*
Zbiór zadań 7
Zad 8
Zad 8
W dwóch przygotowanych przez Ciebie plikach tekstowych znajdują się w
każdym wierszu słowa. Nie wiemy, ile jest słów w każdym pliku. Napisz
program, który do trzeciego pliku zapisuje tylko te słowa, które
pojawiły się jednocześnie w dwóch plikach i zawierają w sobie więcej
spółgłosek niż samogłosek. Ze słów w trzecim pliku tekstowym utwórz
jeden napis, w którym kolejne słowa są oddzielone przecinkami i
występują w kolejności alfabetycznej.
*/
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.text.Collator;
import java.util.Arrays;
import java.util.Locale;
import java.util.Scanner;
public class Zad2 {
static void thirdFile(String[][] arr1, String[][] arr2) {
int vovelNumber = 0;
int consonantsNumber = 0;
try (FileWriter fileWriter = new FileWriter("zad8File3")) {
PrintWriter printWriter = new PrintWriter(fileWriter);
for (int i = 0; i < arr1.length; i++) {
for (int j = 0; j < arr1[i].length; j++) {
if (contains(arr2, arr1[i][j])) {
vovelNumber = vowelNumber(arr1[i][j]);
consonantsNumber = arr1[i][j].length() - vovelNumber;
if (consonantsNumber > vovelNumber) {
printWriter.print(arr1[i][j]);
printWriter.print(" ");
}
}
}
}
} catch (Exception e) {
throw new IllegalArgumentException("filewriter err");
}
}
static int vowelNumber(String txt) {
int counter = 0;
char[] arr = txt.toCharArray();
for (int i = 0; i < arr.length; i++) {
if (arr[i] == 'a' || arr[i] == 'e' || arr[i] == 'i' || arr[i] == 'o' || arr[i] == 'u' || arr[i] == 'y') {
counter++;
}
}
return counter;
}
static boolean contains(String[][] arr, String word) {
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
if (arr[i][j].equals(word)) {
return true;
}
}
}
return false;
}
static String[][] readFile(String fileName) {
try (FileReader fileReader = new FileReader(fileName)) {
Scanner sc = new Scanner(fileReader);
int linesNumber = linesNumber(fileName);
String[][] arr = new String[linesNumber][];
for (int i = 0; i < linesNumber; i++) {
arr[i] = sc.nextLine().split(" ");
}
sc.close();
return arr;
} catch (Exception e) {
throw new IllegalArgumentException("filereader err");
}
}
static int linesNumber(String fileName) {
try (FileReader fileReader = new FileReader(fileName)) {
Scanner sc = new Scanner(fileReader);
int counter = 0;
while (sc.hasNextLine()) {
counter++;
sc.nextLine();
}
sc.close();
return counter;
} catch (Exception e) {
throw new IllegalArgumentException("err");
}
}
public static void main(String[] args) {
String[][] arrFile1 = readFile("zad8File1");
String[][] arrFile2 = readFile("zad8File2");
System.out.println("file1: " + Arrays.deepToString(arrFile1));
System.out.println("file2: " + Arrays.deepToString(arrFile2));
thirdFile(arrFile1, arrFile2);
String[][] arrFile3 = readFile("zad8File3");
System.out.println("file3: " + Arrays.deepToString(arrFile3));
Locale.setDefault(new Locale("pl", "PL"));
Arrays.sort(arrFile3[0], Collator.getInstance());
StringBuilder sb = new StringBuilder();
for (int i = 0; i < arrFile3[0].length; i++) {
sb.append(arrFile3[0][i] + ", ");
}
sb.delete(sb.length() - 2, sb.length() - 1);
System.out.println(sb);
}
}