将字符转换为字符串(没有数组)?

时间:2014-11-10 16:00:38

标签: java string char converter

我需要将一组字符转换为字符串。问题是,我不知道如何在没有阵列的情况下这样做(它被禁止使用它们,因为我们还没有看到这个主题)。

因此该方法首先要求用户输入一个单词(String类型)。在这种情况下,我使用" programma"举个例子。第一步是对该单词的每个字符计数+4。在这个例子中,它必须从" programma" - > " tvskveqqe&#34 ;.

我将输入字符串" programma"分成单独的字符,并在alfabet中添加+4。之后我确定了这些字母" wxyz"使用,它们被转换为w - > a,x - > b,y - > c和z - > d。

但是现在我被困在那个部分,我需要把这些字符放在那个''''''''''''''''''' K'' v'' E'' q'' q'' E'到字符串" tvskveqqe",并将其用作返回语句。

谢谢!

    public char coderen() {
    String str; //input string
    char c, e = ' ';
    int a = 4, b, d;

    System.out.println("Geef een woord in: "); 
    str = Input.readString(); //input

    for (int i = 0; i < str.length(); i++) { // Splits up the string into separate chars
        b = (int) str.charAt(i) + a; // +4 in ASCII
        c = (char) b;

        if (c >= 'e' && c <= 'z') {
            e = c;
            System.out.println(e);
        }
        else if (c >= '{' && c <= '~') { // converts 'w''x''y''z' into 'a''b''c''d'
            d = (int)c - 26;
            e = (char) d;
            System.out.println(e);
        }
        else {
            System.out.println("fout!");
        }
    }
    return e;
}

3 个答案:

答案 0 :(得分:1)

你有多种方法可以做到。

例如String.concat()

String str = "";
str.concat(new String(myChar));

它实际上和做

一样
str += mychar;

但一般来说这是一种不好的做法,因为Strings are immutable,他们消耗记忆,而你在这里创造了很多。

您可以使用的最好的是StringBuilder

StringBuilder builder = new StringBuilder();
builder.append(myChar1);
builder.append(myChar2);
...
builder.toString();

作为旁注,我会说如果您使用的是String,那么您实际上正在使用 char数组Stringchar[]结构的包装类:

public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence {
    /** The value is used for character storage. */
    private final char value[];
    ...

答案 1 :(得分:0)

试试这个。你会明白的。它不使用任何数组。

public static void main(String[] args) throws Exception {
    char ch = 'a';
    String s = ch + "";
    for (int i=1; i<=10; i++){
        s += (char)(ch + i);
    }
    System.out.println(s);      
}
  

但现在我被困在那个部分,我需要把字符't','v','s','k','v','e','q','q ','e'成为字符串“tvskveqqe”,并将其用作return语句。

您也可以使用ArrayList(如果您不允许使用数组) 然后循环它,做我上面做的。

答案 2 :(得分:0)

有点奇怪,你不应该使用数组,因为最后一个字符串总是表示为一个字符数组,所以你可以争辩说你应用的任何方法都是“使用数组”...

话虽如此,你可以尝试不同的东西:

使用StringBuilder:

StringBuilder sb = new StringBuilder();
for .... { sb.appendChar(c); }

使用字符串连接:

String result = "";
for .... { result = result + c; }

使用字符串替换:(但这不是基于索引而是基于匹配的字符):

for (char c = 'a'; c <= 'z'; c++) {
    result = result.Replace(c, c + 4);
}