试着在java中编写一个简单的编译器(我使用的是notepad ++)

时间:2014-09-23 20:02:17

标签: java run-length-encoding

我的问题是我如何编写一个简单的编译器,就像传真机中使用的编译器一样,将aaaavvvvvdddddddddddd转换为4a5vBd。

另外,我到了"假设"输入的任何字符串都不包含大写字母和数字,并且任何字符串将包含少于61的任何类型的字符,因此,我假设没有人会在我的程序中继续输入64。 / p>

这是我得到的

import java.util.*;
public class Program4
{

    public static void main(String[] args)
    {
        Scanner scan = new Scanner(System.in);
        int n;
        char cn;
        String word;
        String numChars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

        System.out.println("Hello, please enter a string");
        word = scan.nextln();

        if(n <= 61)
        {
        int n = ?;
        cn = numChars.charAt(n);
        }
    }
}

我假设我需要使用一个循环,但我不知道应该用什么来计算重复的字母,然后告诉我连续多少个字母。现在我只是在寻求建议,而不是寻求代码,因为我想这样做,但作为初学者,我的Java&#34;词汇&#34;现在还不是很大。

非常感谢任何建议/提示。

此致 Mr.Trips

好吧,我回来了,似乎我的代码在这里只打印出147.无论我输入什么,我总会得到147.我试图追踪我所有的变量,但当我这样做时,我得到的确切我想要什么,我的逻辑中必须有一些错误。有什么想法吗?

import java.util.*;    
public class Program4
{
    public static void main(String[] args)
    {

        Scanner scan = new Scanner(System.in);
        int n = 0;
        int s = 0;
        char a;
        char b;
        char c;
        String word;
        String numChars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

        System.out.println("Please enter a string");
        word = scan.nextLine();


        while (n < word.length()) 
        {
            a = word.charAt(n);
            b = a;
            n = n ++;
            a = word.charAt(n);

            if (a == b)
            {
                    s = (s + 1) ; 
            }
            else if (a != b);
            {
                c = numChars.charAt(s);
                System.out.print(b + c);
                s = 0;
                c = 0;
                break;

            }
        }
    }
}

再次感谢你!

1 个答案:

答案 0 :(得分:3)

由于你不想要代码,这在逻辑上是如何做到的。你是对的,你应该循环每个字符串的字符串。将最后一个char存储在变量中并保留计数器变量。将当前char与最后一个char进行比较,如果它相等则再增加计数器。一旦它不等于最后一个char,则将counter + last char添加到结果字符串并重置计数器变量。每次迭代更新最后一个char变量。