Błąd kompilacji

0

Napisałem program

import java.util.*;
import java.io.FileReader;
public class Prog {
	static Map<String, Integer> m;
	static int[] freq = new int[26];

	public static void add(String key){
		if (m.containsKey(key))
			m.put(key, m.get(key)+1);
		else
			m.put(key, 1);
	}

	public static void main(String[] args) throws Exception {
		FileReader fr = new FileReader(args[1]);
		StringBuilder sb = new StringBuilder();
		int c;
		do {
			c = fr.read();
			if (Character.isSpaceChar((char)c)) {
				add(sb.toString());
				sb.delete(0, sb.length());
			} else {
				freq[Character.toLowerCase((char)c) - 'a']++;
				sb.append((char)c);
			}
		} while (c != -1);
		
		for (int i = 0; i < 26; i++){
			System.out.println((char)('a'+i) + ": " + freq[i]);
			
			
			
		}
		
		
		
		
	}
}

I pojawia się taki błąd:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at Prog.main(Prog.java:15)

Ktoś wie co jest nie tak?

0

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1

Wychodzisz poza zakres tablicy; tutaj:

FileReader fr = new FileReader(args[1]);

Element args[1] nie istnieje.

0

A jak można zwiększyć zakres?

0

Z tego, co wiem, args to są argumenty przekazywane do aplikacji.
Od tak sobie nie możesz ich zmienić; możesz co najwyżej sprawdzić ich ilość.

0

Pierwszy argument masz w args[0], nie w args[1].

Na początku powinieneś też dać sprawdzenie
if (args.length == 0) { wypisanie informacji o błędzie albo rzucenie wyjątku}

btw. to nie jest błąd kompilacji, tylko wykonania

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