Hej, jestem nowy na forum, więc witam wszystkich :3
Robiłem dzisiaj zadanie ze SPOJ'a i w main stworzyłem pętlę for, która na moje oko początkującego powinna wykonywać się n razy, a z jakiejś nieznanej mi przyczyny wykonuje się n-1. Już któryś raz mi się to przytrafiło. W końcu mnie to zaintrygowało i chciałbym się dowiedzieć jaka jest przyczyna takiego problemu.
Chętnie posłucham krytyki w stosunku do mojego kodu - jak wspomniałem jestem początkującym, więc chciałbym nabrać dobrych nawyków :)
import java.util.Scanner;
public class ZliczaczLiter {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int n = s.nextInt();
String tekst;
char[] male = new char[26];
char[] duze = new char[26];
int[] maleLicz = new int[26];
int[] duzeLicz = new int[26];
uzupelnianieAlfabetu(male, duze);
uzupelnianieZerami(maleLicz, duzeLicz);
for (int i = 0; i < n; i++) { // DOKŁADNIE O TĄ PĘTLĘ CHODZI
tekst = s.nextLine();
licz(tekst, male, duze, maleLicz, duzeLicz);
}
wyswietl(male, duze, maleLicz, duzeLicz);
s.close();
}
private static void wyswietl(char[] male, char[] duze, int[] maleLicz, int[] duzeLicz) {
// metoda wyświetlająca ilość wystąpień poszczególnych znaków - alfabetycznie, pierw małe litery
for(int i=0;i<maleLicz.length;i++) {
if(maleLicz[i]>0)
System.out.println(male[i] + " " + maleLicz[i]);
}
for(int i=0;i<duzeLicz.length;i++) {
if(duzeLicz[i]>0)
System.out.println(duze[i] + " " + duzeLicz[i]);
}
}
private static void licz(String tekst, char[] male, char[] duze, int[] maleLicz, int[] duzeLicz) {
// metoda zliczająca występowanie znaków
for(int i=0;i<tekst.length();i++) {
for(int j=0;j<male.length;j++) {
if(tekst.charAt(i)==male[j])
maleLicz[j]++;
if(tekst.charAt(i)==duze[j])
duzeLicz[j]++;
}
}
}
public static void uzupelnianieZerami(int[] maleLicz, int[] duzeLicz) {
// metoda uzupełnia dwie tablice zerami
for (int i = 0; i < maleLicz.length; i++) {
maleLicz[i] = 0;
duzeLicz[i] = 0;
}
}
public static void uzupelnianieAlfabetu(char[] male, char[] duze) {
// metoda uzupełnia dwie tablicę literami alfabetu od a do z
char a = 'a';
char d = 'A';
for (int i = 0; i < male.length; i++) {
male[i] = a++;
duze[i] = d++;
}
}
}