0

I'm trying to write a program to decode Adobe key code into text, however the string array that I'm using doesn't seem to change values when passing through if statements within my for loop. Here is the code (I haven't implemented the print out section as I could not get my test of the the array switching values to work):

import java.util.Scanner;

public class Decode {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in); 
        System.out.println ("Enter collected data:");
        String data = input.nextLine();
        input.close();
        String[] splitdata = data.split("\\s+");
        int datalength=splitdata.length;
        for (int i=0; i<datalength; i++){
            if (splitdata[i]=="1") 
                splitdata[i]="\n";
            if (splitdata[i]=="8") 
                splitdata[i]="**backspace**";
            if (splitdata[i]=="9") 
                splitdata[i]="**tab**";
            if (splitdata[i]=="13") 
                splitdata[i]="**enter**";
            if (splitdata[i]=="16") 
                splitdata[i]="**shift**";
            if (splitdata[i]=="17") 
                splitdata[i]="**control**";
            if (splitdata[i]=="19") 
                splitdata[i]="**pause/break**";
            if (splitdata[i]=="20") 
                splitdata[i]="**capslock**";
            if (splitdata[i]=="27") 
                splitdata[i]="**esc**";
            if (splitdata[i]=="32") 
                splitdata[i]="\\s+";
            if (splitdata[i]=="33") 
                splitdata[i]="*page up**";
            if (splitdata[i]=="34") 
                splitdata[i]="**page down**";
            if (splitdata[i]=="35") 
                splitdata[i]="**end**";
            if (splitdata[i]=="36") 
                splitdata[i]="**home**";
            if (splitdata[i]=="37") 
                splitdata[i]="**left**";
            if (splitdata[i]=="38") 
                splitdata[i]="**up**";
            if (splitdata[i]=="39") 
                splitdata[i]="**right**";
            if (splitdata[i]=="40") 
                splitdata[i]="**down**";
            if (splitdata[i]=="45") 
                splitdata[i]="**insert**";
            if (splitdata[i]=="46") 
                splitdata[i]="**delete**";
            if (splitdata[i]=="48") 
                splitdata[i]="0";
            if (splitdata[i]=="49") 
                splitdata[i]="1";
            if (splitdata[i]=="50") 
                splitdata[i]="2";
            if (splitdata[i]=="51") 
                splitdata[i]="3";
            if (splitdata[i]=="52") 
                splitdata[i]="4";
            if (splitdata[i]=="53") 
                splitdata[i]="5";
            if (splitdata[i]=="54") 
                splitdata[i]="6";
            if (splitdata[i]=="55") 
                splitdata[i]="7";
            if (splitdata[i]=="56") 
                splitdata[i]="8";
            if (splitdata[i]=="57") 
                splitdata[i]="9";
            if (splitdata[i]=="S-65") 
                splitdata[i]="a";
            if (splitdata[i]=="S-66") 
                splitdata[i]="b";
            if (splitdata[i]=="S-67") 
                splitdata[i]="c";
            if (splitdata[i]=="S-68") 
                splitdata[i]="d";
            if (splitdata[i]=="S-69") 
                splitdata[i]="e";
            if (splitdata[i]=="S-70") 
                splitdata[i]="f";
            if (splitdata[i]=="S-71") 
                splitdata[i]="g";
            if (splitdata[i]=="S-72") 
                splitdata[i]="h";
            if (splitdata[i]=="S-73") 
                splitdata[i]="i";
            if (splitdata[i]=="S-74") 
                splitdata[i]="j";
            if (splitdata[i]=="S-75") 
                splitdata[i]="k";
            if (splitdata[i]=="S-76") 
                splitdata[i]="l";
            if (splitdata[i]=="S-77") 
                splitdata[i]="m";
            if (splitdata[i]=="S-78") 
                splitdata[i]="n";
            if (splitdata[i]=="S-79") 
                splitdata[i]="o";
            if (splitdata[i]=="S-80") 
                splitdata[i]="p";
            if (splitdata[i]=="S-81") 
                splitdata[i]="q";
            if (splitdata[i]=="S-82") 
                splitdata[i]="r";
            if (splitdata[i]=="S-83") 
                splitdata[i]="s";
            if (splitdata[i]=="S-84") 
                splitdata[i]="t";
            if (splitdata[i]=="S-85") 
                splitdata[i]="u";
            if (splitdata[i]=="S-86") 
                splitdata[i]="v";
            if (splitdata[i]=="S-87") 
                splitdata[i]="w";
            if (splitdata[i]=="S-88") 
                splitdata[i]="x";
            if (splitdata[i]=="S-89") 
                splitdata[i]="y";
            if (splitdata[i]=="S-90") 
                splitdata[i]="z";
            if (splitdata[i]=="96") 
                splitdata[i]="0";
            if (splitdata[i]=="97") 
                splitdata[i]="1";
            if (splitdata[i]=="98") 
                splitdata[i]="2";
            if (splitdata[i]=="99") 
                splitdata[i]="3";
            if (splitdata[i]=="100") 
                splitdata[i]="4";
            if (splitdata[i]=="101") 
                splitdata[i]="5";
            if (splitdata[i]=="102") 
                splitdata[i]="6";
            if (splitdata[i]=="103") 
                splitdata[i]="7";
            if (splitdata[i]=="104") 
                splitdata[i]="8";
            if (splitdata[i]=="105") 
                splitdata[i]="9";
            if (splitdata[i]=="106") 
                splitdata[i]="*";
            if (splitdata[i]=="107") 
                splitdata[i]="+";
            if (splitdata[i]=="109") 
                splitdata[i]="-";
            if (splitdata[i]=="110") 
                splitdata[i]=".";
            if (splitdata[i]=="111") 
                splitdata[i]="/";
            if (splitdata[i]=="112") 
                splitdata[i]="**F1**";
            if (splitdata[i]=="113") 
                splitdata[i]="**F2**";
            if (splitdata[i]=="114") 
                splitdata[i]="**F3**";
            if (splitdata[i]=="115") 
                splitdata[i]="**F4**";
            if (splitdata[i]=="116") 
                splitdata[i]="**F5**";
            if (splitdata[i]=="117") 
                splitdata[i]="**F6**";
            if (splitdata[i]=="118") 
                splitdata[i]="**F7**";
            if (splitdata[i]=="119") 
                splitdata[i]="**F8**";
            if (splitdata[i]=="120") 
                splitdata[i]="**F9**";
            if (splitdata[i]=="122") 
                splitdata[i]="**F11**";
            if (splitdata[i]=="123") 
                splitdata[i]="**F12**";
            if (splitdata[i]=="124") 
                splitdata[i]="**F13**";
            if (splitdata[i]=="125") 
                splitdata[i]="**F14**";
            if (splitdata[i]=="126") 
                splitdata[i]="**F15**";
            if (splitdata[i]=="144") 
                splitdata[i]="**NumLock**";
            if (splitdata[i]=="145") 
                splitdata[i]="**ScrLock**";
            if (splitdata[i]=="186") 
                splitdata[i]=";";
            if (splitdata[i]=="187") 
                splitdata[i]="=";
            if (splitdata[i]=="188") 
                splitdata[i]=",";
            if (splitdata[i]=="189") 
                splitdata[i]="-";
            if (splitdata[i]=="190") 
                splitdata[i]=".";
            if (splitdata[i]=="191") 
                splitdata[i]="/";
            if (splitdata[i]=="192") 
                splitdata[i]="`";
            if (splitdata[i]=="219") 
                splitdata[i]="[";
            if (splitdata[i]=="220") 
                splitdata[i]="**backslash**";
            if (splitdata[i]=="221") 
                splitdata[i]="]";
            if (splitdata[i]=="222") 
                splitdata[i]="'";

        }

        System.out.println(splitdata[0]);

    }

}

For example if I type 8 I should get a print that reads backspace, however it simply outputs 8. I'm sure it's a simple mistake that I've overlooked, but I'm pretty new to java so any help would be greatly appreciated.

David Ehrmann
  • 7,366
  • 2
  • 31
  • 40
hwilco
  • 7
  • 2
  • 1
    don't use `==` for string comparison use instead `.equals()` secondly can you tell the format of input? –  Jul 12 '14 at 05:14
  • the input is just a string typed into the console. so would it be: if (splitdata[i].equals("8))? – hwilco Jul 12 '14 at 05:18
  • Look into either switch statements (Java 7+) or HashMaps to clean this up (and make it faster). – David Ehrmann Jul 12 '14 at 06:39
  • possible duplicate of [How do I compare strings in Java?](http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) – Henry Jul 12 '14 at 06:45
  • I suggest that you use a debugger to trace through your code. It doesn't do what you think it does. – Code-Apprentice Jul 12 '14 at 06:45

1 Answers1

0

Try this example:

import java.util.Scanner;

class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
        Scanner input = new Scanner(System.in); 
        System.out.println ("Enter collected data:");
        String data = input.nextLine();
        input.close();
        String[] splitdata = data.split("\\s+");
        int datalength=splitdata.length;
        for (int i=0; i<datalength; i++)
        {
            if (splitdata[i].equals("1") )
                splitdata[i]="**newline**";
            else if (splitdata[i].equals("8") )
                splitdata[i]="**backspace**";
            else if (splitdata[i].equals("9") )
                splitdata[i]="**tab**";
            else if (splitdata[i].equals("13") )
                splitdata[i]="**enter**";
            else if (splitdata[i].equals("16") )
                splitdata[i]="**shift**";
            else
                System.out.println("oops!, no match for: " + splitdata[i]);
        }
        for(String s: splitdata)
        {
            System.out.println(s);
        }
    }
}

Apart from this, if you are allowed to collections then I would suggest you to use HashMap instead atleast you can rid of this ugly if-else