0

I always get the following error when trying to run my code :

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at MorseCodeToPlainText.main(MorseCodeToPlainText.java:13)

This is my code:

public class MorseCodeToPlainText {
  public static void main(String[] args) throws IOException {

    BufferedReader br = new BufferedReader(new FileReader(args[0])); 
    StringBuilder sb = new StringBuilder`enter code here`(); 

    String line = br.readLine(); 
    while (line != null) { 
        sb.append(line).append("\n"); 
        line = br.readLine(); 
    } 

    String fileAsString = sb.toString();

    System.out.println(fileAsString);

    String []morseCodes = fileAsString.split(" | ");

    String plainText = "";
    for(int i=0; i<morseCodes.length; i++)
    {
        plainText += decode(morseCodes[i]);
    }

    System.out.println(plainText);

    writeDataToFile("decoded.txt", plainText);
}

public static String decode (String mCode) {
    String pCode = " ";

    if (mCode.equals(".-"))
        pCode = "A";
    else if (mCode.equals("-..."))
        pCode = "B";
    else if (mCode.equals("-.-."))
        pCode = "C";
    else if (mCode.equals("-.."))
        pCode = "D";
    else if (mCode.equals("."))
        pCode = "E";
    else if (mCode.equals("..-."))
        pCode = "F";
    else if (mCode.equals("--."))
        pCode = "G";
    else if (mCode.equals("...."))
        pCode = "H";
    else if (mCode.equals(".."))
        pCode = "I";
    else if (mCode.equals(".---"))
        pCode = "J";
    else if (mCode.equals("-.-"))
        pCode = "K";
    else if (mCode.equals(".-.."))
        pCode = "L";
    else if (mCode.equals("--"))
        pCode = "M";
    else if (mCode.equals("-."))
        pCode = "N";
    else if (mCode.equals("---"))
        pCode = "O";
    else if (mCode.equals(".--."))
        pCode = "P";
    else if (mCode.equals("--.-"))
        pCode = "Q";
    else if (mCode.equals(".-."))
        pCode = "R";
    else if (mCode.equals("..."))
        pCode = "S";
    else if (mCode.equals("-"))
        pCode = "T";
    else if (mCode.equals("..-"))
        pCode = "U";
    else if (mCode.equals("...-"))
        pCode = "V";
    else if (mCode.equals(".--"))
        pCode = "W";
    else if (mCode.equals("-..-"))
        pCode = "X";
    else if (mCode.equals("-.--"))
        pCode = "Y";
    else if (mCode.equals("--.."))
        pCode = "Z";
    else if (mCode.equals("-----"))
        pCode = "0";
    else if (mCode.equals(".----"))
        pCode = "1";
    else if (mCode.equals("..---"))
        pCode = "2";
    else if (mCode.equals("...--"))
        pCode = "3";
    else if (mCode.equals("....-"))
        pCode = "4";
    else if (mCode.equals("....."))
        pCode = "5";
    else if (mCode.equals("-...."))
        pCode = "6";
    else if (mCode.equals("--..."))
        pCode = "7";
    else if (mCode.equals("---.."))
        pCode = "8";
    else if (mCode.equals("----."))
        pCode = "9";
    else if (mCode.equals(".-.-.-"))
        pCode = ".";
    else if (mCode.equals("--..--"))
        pCode = ",";
    else if (mCode.equals("-..-."))
        pCode = "/";
    else if (mCode.equals("..--.."))
        pCode = "?";

    return pCode;
}

public static void writeDataToFile(String fileName, String fileText){

    FileWriter fw = null;
    BufferedWriter bw = null;
    PrintWriter pw = null;

    try {

        fw = new FileWriter(fileName);
        bw = new BufferedWriter(fw);
        pw = new PrintWriter(bw);

        pw.println(fileText);

        pw.flush();
        pw.close();
        bw.close();
        fw.close();
    }
    catch (IOException io) {
        System.out.println("Problem ocurred during file operation...");
     }
  }
}
Bertrand Martel
  • 42,756
  • 16
  • 135
  • 159
  • Which line is line 13 (where the exception happens)? – Ole V.V. May 01 '17 at 14:32
  • Possible duplicate of [What causes a java.lang.ArrayIndexOutOfBoundsException and how do I prevent it?](http://stackoverflow.com/questions/5554734/what-causes-a-java-lang-arrayindexoutofboundsexception-and-how-do-i-prevent-it) – Ole V.V. May 01 '17 at 14:34
  • What is in your file? Please quote at least the first few lines. Also quote all output from your program if it prints anything before the exception. It will really help us spot the bug. – Ole V.V. May 01 '17 at 14:36
  • BufferedReader br = new BufferedReader(new FileReader(args[0])); – David Correia May 01 '17 at 14:40
  • And there is also an error in lin 11 apparently – David Correia May 01 '17 at 14:43
  • A `java.lang.ArrayIndexOutOfBoundsException: 0` in the line you quote would mean that Java hasn’t discovered that you have supplied any command line arguments to your program when running it, therefore it gives your program an `args` array of length 0. So when you try to take a file name out of that empty array, it fails with that exception. So you may want to edit the question and tell us how you run your program and your attempt to provide a file name as command line argument (if any). – Ole V.V. May 01 '17 at 14:56
  • Sorry dude It is just that I am not very good at this sort of stuff, Do you know how I could fix this? – David Correia May 01 '17 at 15:01
  • I get this error Exception in thread "main" java.io.FileNotFoundException: E:\College 2016-17\3 Wednesday\Software Design and Development\Topic1_Intro_To_Programming\eclipse\MorseDecoder - 15024708\src (Access is denied) at java.io.FileInputStream.open0(Native Method) at java.io.FileInputStream.open(Unknown Source) at java.io.FileInputStream.(Unknown Source) at java.io.FileInputStream.(Unknown Source) at java.io.FileReader.(Unknown Source) at MorseCodeToPlainText.main(MorseCodeToPlainText.java:13) – David Correia May 01 '17 at 15:30

2 Answers2

0

You are using the first argument to build the BufferedReader.The args[0]. BufferedReader br = new BufferedReader(new FileReader(args[0]));

You should pass the file path as command line argument when you run this program. Also correct the StringBuilder declaration as StringBuilder sb = new StringBuilder("enter code here");

Master Po
  • 1,497
  • 1
  • 23
  • 42
0

enter image description here

If you are asking for how to pass commandline arguments in Eclipse. This screenshot should be of help.

Raviteja Gubba
  • 1,006
  • 6
  • 9