Diskuze: prosím o pomoc nevím jak udělat zbytek :(
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 7 zpráv z 7.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Konečne niekto, kto sa skutočne o niečo aj pokúsil Len by si mohol napísať trocha
viacej slov ohľadom zadania, "nejsteklejší" myslíš najčastejšie? A
najčastejšie písmeno alebo slovo? A skopíroval si to sem dobre? Pretože
táto časť nedáva zmysel
while != null) {
A rovnako by si kód mohol vložiť medzi značky ktoré sa ti doplnia ak stlačíš Ctrl + K čím bude vyzerať ako tento kúsok vyššie.
Promiň je to špatně, jo a je to nejčastější a hledám nejčastější písmeni slovo už mám ale písmeno nevím.
package tryy;
/*
* To change this license header, choose License Headers in Project
Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
/**
*
* @author Petr
*/
public class Statistika {
public static void main(String[] args) throws Exception {
String line, word = "";
int count = 0, maxCount = 0;
ArrayList<String> words = new ArrayList<String>();
FileReader file = new
FileReader("C:\\Users\\svecj\\Downloads\\statistika.txt ");
BufferedReader br = new BufferedReader(file);
while != null) {
String string[] = line.toLowerCase().split("([,.\\s]+) ");
for(String s : string){
words.add(s);
}
}
for(int i = 0; i < words.size(); i++){
count = 1;
for(int j = i+1; j < words.size(); j++){
if(words.get(i).equals(words.get(j))){
count++;
}
}
if(count > maxCount){
maxCount = count;
word = words.get(i);
}
}
System.out.println("Nejcastejsi slovo: " + word);
br.close();
}
}
while ((line = br.readLine()) != null) {
...
}
)
Jestli to mělo znamenat nejčastější písmeno, tak by to mohlo vypadat následovně. Snad se v tom vyznáš, zvýraznil jsem ti i řádky, které jsem upravil:
package com.frontend;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class Statistika {
private static final String PATTERN = "([,.\\s]+)"; //<-- ADDED
private static int largestCountOfElements = 0; //<-- ADDED
private static List<Character> mostlyUsedCharacterList = new ArrayList<>(); //<-- ADDED
public static void main(String[] args) throws Exception {
String line;
String word = "";
int count = 0;
int maxCount = 0;
List<String> words = new ArrayList<>();
List<Character> letters = new ArrayList<>(); //<-- ADDED
FileReader file = new FileReader("data.txt");
BufferedReader br = new BufferedReader(file);
while ((line = br.readLine()) != null) {
String string[] = line.toLowerCase().split(PATTERN); //<-- CHANGED
for (String s : string) {
words.add(s);
}
line = line.toLowerCase().trim().replaceAll(PATTERN, ""); //<-- ADDED
for (char letter : line.toCharArray()) { //<-- ADDED
letters.add(letter); //<-- ADDED
} //<-- ADDED
}
for (int i = 0; i < words.size(); i++) {
count = 1;
for (int j = i + 1; j < words.size(); j++) {
if (words.get(i).equals(words.get(j))) {
count++;
}
}
if (count > maxCount) {
maxCount = count;
word = words.get(i);
}
}
Set<Character> collectionWithoutDuplications = new HashSet<>(letters); //<-- ADDED BLOCK
collectionWithoutDuplications.forEach(evt -> {
int countOfFoundedLetters = 0;
for (char letter : letters) {
if (evt.equals(letter)) {
countOfFoundedLetters++;
}
}
if (largestCountOfElements < countOfFoundedLetters) {
largestCountOfElements = countOfFoundedLetters;
mostlyUsedCharacterList.clear();
mostlyUsedCharacterList.add(evt);
} else if (largestCountOfElements == countOfFoundedLetters) {
mostlyUsedCharacterList.add(evt);
}
}); //<-- ADDED BLOCK
System.out.println("Nejcastejsi slovo: " + word);
System.out.println("Nejčastější písmeno/a: " + mostlyUsedCharacterList); //<-- ADDED
br.close();
}
}
Jen jsem si s tím trošku pohrál, takže to vrací nejen nejčastější
písmeno, ale i možnost, že tam bude stejný počet nejčastějších písmen
PS: Omlouvám se za ten balíček, nevytvářel jsem nový projekt, ale hodil
jsem to do projektu, který jsem rychle otevřel, takže ten si změň
jinak jen pro info - ten set jsem použil proto, protože kolekce Set ti
nedovolí duplikátní hodnoty.
Takže mi to ušetřilo jedno procházení cyklu, kdy jsem už znal unikátní
hodnoty a pak jsem je jen porovnával, kolikrát tam ta hodnota je.
Zobrazeno 7 zpráv z 7.