将char转换为int,make magic,再次转换为char?

时间:2015-10-31 18:13:47

标签: java char int

几个星期前我开始了我的第一个编程课程,这个功课让我有点疯狂。想知道你能不能帮助我:}

Basiclly我需要设置一个程序,创建一个以特定字母开头的char矢量(大小为n),并将其余字母填入以下字母,如下所示:sequence(' c',3)→ {' c',' d',' e'}

我的代码出了什么问题?

class Aula6{
    static char[] sequence(char c, int n){
        char[]v=new char[n];
        v[0]=c;
            for (int i=1;i<n;i=i+1){
                v[i] = (char)((int)v[i]+1);         
            }
            return v;       
    }
}

我希望我足够清楚,我的英语是terribad:S

2 个答案:

答案 0 :(得分:0)

这就是你写它的方式;

static char[] sequence(char c, int n) {
    char[] ret = new char[n];
    for (int i = 0; i < n; i++)
        ret[i] = c++;
    return ret;
}

在这种情况下,Java会为你做演员。

答案 1 :(得分:0)

我相信你遇到的问题是你的索引已关闭。例如,您试图将v [1]的值设置为比之前的v [1]多1,而不是v [0]的值。 Java会自动将数组的值设置为“零值”,在这种情况下为(char)0。所以v [1]从(char)0变为(char)1。您的解决方案的问题在于您在编制索引时会被一个人关闭。如果您执行System.out.println(v);,则只能看到第一个字符。这是因为前32个(我认为)ASCII字符中的大多数是控制字符,并且在打印时通常不会显示。正如Peter Lawrey所说,Java可以为你处理很多演员。

public static char[] sequence(char c, int n) {
    char[] v = new char[n];
    v[0] = c;
    for(int i = 1; i < n ;i++) {
        //To see what's going on with your methodology
        //System.out.println( "Initial: " + (int)v[i]);
        //v[i] = (char)((int)v[i]+1);
        //System.out.println( "Updated: " + (int)v[i]);

        //This would fix your code
        v[i] = (char)((int)v[i-1] + 1);  //not v[i] 
    }
}