【问题标题】:Convert char to int, do magic, convert to char again?将char转换为int,做魔术,再次转换为char?
【发布时间】:2015-10-31 18:13:47
【问题描述】:

几周前我开始了我的第一堂编程课,作业让我有点发疯,哈哈。想知道你能不能在这里帮帮我:}

基本上我需要设置一个程序来创建一个以特定字母开头并将其余部分填充为以下字母的字符向量(大小 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;       
    }
}

我希望我足够清楚,我的英语很糟糕:S

【问题讨论】:

  • 你不能使用std::vector吗?这是 C++ 对吧?
  • 语言是什么?爪哇?
  • @gsamaras 没有分号后跟类定义的结尾,所以我猜它是 java 。
  • 中文字母可能是这样,但SO不是猜测的网站。可怕的问题,-1,接近投票!
  • 它是 Java。很抱歉造成混乱。添加标签:S

标签: java char int


【解决方案1】:

你可以这样写;

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 将为您进行转换。

【讨论】:

  • 谢谢老兄 :) 做到了
  • @Kaynrath 你能看到c++ 非常简单地完成了你需要的一切。 ;)
  • 是的。我正在尝试“新手”的做法,我猜是 x)
【解决方案2】:

我相信您遇到的问题是您的索引已关闭。例如,您试图将 v[1] 的值设置为比 v[1] 以前的值多 1,而不是比 v[0] 的值多 1。 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] 
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-07
    • 1970-01-01
    • 1970-01-01
    • 2017-03-21
    • 2011-02-25
    • 2015-11-23
    • 2015-12-18
    相关资源
    最近更新 更多