Compression and Decompression of Argument Strings

2019-03-03 16:03发布

I'm having trouble coming up with a way too decompress a String in Java. This is a basic Java class I'm taking so it only requires basic commands, nothing too fancy. The objective it to able to type

C:\>java Compress -c aaaabbbbbcc

in the command prompt and it will print a4b5c2 (like it is compress the argument string).

The other objective is to type

C:\>java Compress -d a5b7c4

and it will print aaaaabbbbbbbcccc (like it will decompress the argument String). The decompression is the issue I'm having. Here is my code, any help I get is much appreciated.

import java.util.*;

public class Compress {
    public static void main(String args[]) {

        Scanner scan = new Scanner(System.in);
        String originalString = scan.nextLine();
        int number = scan.nextInt();

        if (args[0].equals("-c")) {
            System.out.println("compress");
            compress(originalString);
        }

        else if (args[0].equals("-d")) {
            System.out.println("decompress");
            decompress(originalString);
        } else {
            System.out.println("Compress program by Kelsey Faram");
            System.out.println("usage: java Compress [-c,-d] < inputFile > outputFile");
        }
    }

    public static void compress(String originalString) {
        int count = 0;
        char comp = originalString.charAt(0);
        for (int i = 0; i < originalString.length(); i++) {
            originalString.charAt(i);

            if (comp == originalString.charAt(i))
                count++;
            else {
                System.out.print(comp + "" + count);
                comp = originalString.charAt(i);
                count = 1;
            }
        }
        System.out.println(comp + "" + count);
    }

    public static void decompress(String originalString) {

    }
}

1条回答
Emotional °昔
2楼-- · 2019-03-03 16:30
Quick Code for you..


public static void decompress(String originalString)
{
        StringBuffer finalString = new StringBuffer();;
        char previouschar = originalString.charAt(0);
        for(int i=1; i < originalString.length(); i+=2){
                for(int j = 0 ; j< Integer.parseInt(""+originalString.charAt(i));j++) {
                    finalString.append(previouschar);
                }               
                if(i+1 < originalString.length())
                {
                    previouschar=originalString.charAt(i+1);
                }
        }
        System.out.println(finalString.toString());
}
查看更多
登录 后发表回答