2014-02-20 93 views
0

我遇到了一个麻烦的问题,就是在Java中解压一个字符串。这是我正在学习的一个基本的Java类,所以它只需要基本的命令,没有什么太花哨。它的目标,以能够键入在Java中压缩和解压缩参数字符串

C:\>java Compress -c aaaabbbbbcc 
在命令提示

和将打印a4b5c2(像它是压缩参数字符串)。

另一目的是键入

C:\>java Compress -d a5b7c4 

和将打印aaaaabbbbbbbcccc(像它将解压缩参数字符串)。减压是我遇到的问题。这里是我的代码,我非常感谢任何帮助。

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) { 

    } 
} 
+0

听起来像功课。提示:使用Integer.parseInt()。 – Zemzela

+0

'减压是我遇到的问题。'我们可以更多地了解这个问题吗?你卡在哪部分代码中?你试图实现什么和如何,以及它与预期的结果有什么不同? – Pshemo

+0

不,我们不会做你的作业 – radai

回答

0
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()); 
}