2012-07-12 117 views
1

这是我的代码:如何解析Java中的字符串?

import java.io.*; 
    import java.util.*; 

    public class Testing { 
     public static void main(String[] args) { 
      Scanner in = new Scanner(System.in); 
      PrintStream out = System.out; 

      String input = in .next(); 
      String output = ""; 
      char c = 0; 
      int count = 0; 
      int countInput = input.length(); 

      for (int i = 0; i < countInput; i++) { 
       if (i == 0) { 
        c = input.charAt(i); 
        count++; 
       } else { 
        if (c == input.charAt(i)) { 
         count++; 
        } else { 
         output = output + count + "" + c; 
         count = 1; 
         c = input.charAt(i); 
         out.println(output); 
        } 
       } 
      } 
      output = output + count + "" + c; 
      out.println(output); 
     } 
    } 

这个程序是假设这样的工作:

输入:

Java测试AAAAAnnnfffkk

输出:

5A3n3f2k

我需要以某种方式解决这个问题:

String input = in.next(); 

我认为args在某处被使用,我不知道在哪里,但。

+0

你有一个静态的主要方法吗?阅读一下,你会看到如何将参数传递给你的应用程序。 – Marvo 2012-07-12 00:56:10

+0

'in'是什么?这可以帮助我们帮助你。 – 2012-07-12 00:59:37

+0

这里是其余的代码,它没有让我发布它... – Shawn 2012-07-12 01:05:30

回答

1

我们可以一次完成这一步。

首先,编写一个程序来获取输入,然后一次打印一个字符。

原因是你将需要阅读输入,并一次处理一个字符,所以第一步是要取消循环机制。

一旦你循环正确,我们可以担心计数重复字母的逻辑。

编辑您的文章,完成后我会发布更多。

+0

import java.io. *; import java.util。*; 公共类测试 { \t公共静态无效的主要(字串[] args) \t { \t \t在新=扫描仪(System.in)扫描仪; \t \t PrintStream out = System.out; – Shawn 2012-07-12 01:05:58

+0

将您的代码发布到您的原始发布中,以便我们可以阅读它。当然,它需要编译和运行。 – 2012-07-12 01:15:03

0

在代码示例:

//importing lib 
import java.util.Scanner; 

//file name "Hello.java" 
public class Hello { 
    //Main method 
    public static void main(String[] args) { 
     //input reader 
     Scanner input = new Scanner(System.in); 
     //output storage 
     StringBuilder output = new StringBuilder(""); 


     //read a line, you can use other command in this class to parse 
     output.append(input.nextLine()); 
     //write a line 
     System.out.println(output.toString()); 
    } 
} 

编辑:

如果你喜欢使用args来则:

public class Hello { 
    // Main method 
    public static void main(String[] args) { 
     // output storage 
     StringBuilder output = new StringBuilder(""); 
     // check if there are arguments 
     if (args.length > 0) { 
      // use string 
      output.append(args[0]); 
     } 
     // write a line 
     System.out.println(output.toString()); 
    } 
} 
+0

我更新了我的代码 – Shawn 2012-07-12 01:13:16

3

你的程序逻辑是确定的。但根据你想要做的事情,你不需要类Scanner

如果你希望你的输入来自参数数组:main(String[] args),那么你需要指定,为您的输入:

String input = args[0]; 

但是,嘿,如果你跑不给参数的程序?它会抛出一个异常,所以你需要有一些错误处理:

String input = ""; 
if (args.length > 0) { 
    input = args[0]; 
} 
+0

oh thankkkk youu ...“args [0]”正是我想要的 – Shawn 2012-07-12 01:15:28

+0

没问题,不客气。 – Ruel 2012-07-12 01:17:10