Co jest nie tak w tym zadaniu?

0

http://www.jkozak.pl/przedmioty/java/zadania6.pdf
Dokładnie to przykład 7 ;)

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Scanner;

public class abc {




 public static void NAPISY(String nazwaPliku) throws FileNotFoundException{
	 //tworzę 2 tablice, w jednej przechowuję litery z tablicy ASCII, a w drugiej przypisuje 0 i następnie będę zwiększał wartość pola o ile dana litera wystąpi
	 char[] chars=new char[26];
	 int[] chars2=new int[26];
	 int znak=97;
	 for(int i=0; i<=26; i++){
		 chars[i]=(char)znak;
		 chars2[i]=0;
		 znak++;
	 }
	 
	 Scanner in= new Scanner(new File(nazwaPliku));
	 while(in.hasNextLine()){
	 //sprawdzam, czy dana litera wystąpiła 
		 String linia=in.nextLine();
		 for(int i=0; i<linia.length(); i++)
		 for(int j=0; j<chars.length; j++){
			 if(linia.charAt(i)==chars[j])chars2[j]++;
		 }
 }
	 //wyznaczam maxa
	 int max=chars2[0];
	 for(int i=0; i<=26; i++){
		 if(chars2[i]>max)max=chars2[i];
	 }
	 ///buduję tzw.wykres
	 for(int i=0; i<=26; i++){
		 int ileObecny=chars2[i];
		 int gwiazdki=50*(ileObecny/max);
		 System.out.print(chars[i]+" ");
		 abc.piszGwiazdki(gwiazdki);
		 System.out.print(" "+ileObecny);
		 System.out.println();
	 }
 }
 
 public static void piszGwiazdki(int ile){
	 for(int i=0; i<ile; i++)System.out.print("*");
 }
	
 public static void main(String[] args) throws InterruptedException, FileNotFoundException {
		

		
		NAPISY("c.txt");
 }  

}
0

Jeżeli masz tablicę 26 znaków to pierwszy element znajduje się pod indeksem 0 a ostatni pod indeksem 25, więc problemem jest ta pętla:

for(int i=0; i<=26; i++){ // Pętla przepuści i == 26 - indeks znajduje się poza tablicą
    chars[i]=(char)znak;
    chars2[i]=0;
    znak++;
}

Na przyszłość - opisuj problemy, pisz jaki wyjątek dostajesz i na której linii.
Jak zadawać pytania na forum

1 użytkowników online, w tym zalogowanych: 0, gości: 1