繁体   English   中英

在Java中转换为字符串时,从StringArray的未使用空间中删除null

[英]Remove null from unused space of StringArray when converting to a string in Java

我正在研究Java编码问题,遇到了以下问题。

Input: A String -> "Code"
Output Expected: A string -> CCoCodCode

我的代码段:(注意:在注释中,我写了传递字符串时的期望值)

public String stringSplosion(String str) { // string Say 'Code'
    String join = "", values = "";
    String gotIt = "";

    int n = str.length(); // 4
    int size = 0;

    for (int i = n; i >= 1; i--) {
        size = size + n; // 4+3+2+1=10
    }

    String[] result = new String[size];

    for (int i = 0; i < str.length(); i++) {
        values = str.substring(i, i + 1);
        join = join + values;
        result[i] = join;
    }

    for (String s : result) {
        gotIt = gotIt + s;
    }

    return gotIt; // Expected output: CCoCodCode
}

我得到的输出:

CCoCodCodenullnullnullnullnullnullnullnullnullnullnullnull

尽管减小了大小,为什么仍存储null ?如何删除它?

注意:我需要使用数组解决此问题。 我知道使用List会容易得多。

public class Answer {

public static String answer(String input){

    StringBuilder sb = new StringBuilder(((input.length() + 1) * input.length()) / 2);

    for (int i = 1; i <= input.length(); i++) {
        sb.append(input.substring(0, i));
    }

    return sb.toString();
}

public static void main(String[] args) {
    System.out.println(answer("Code"));
}

}

如果要保留代码的当前结构,请摆脱第一个for循环。 并创建String [] array = new String [n]

public static String stringSplosion(String str) { // string Say 'Code'
String join = "", values = "";
String gotIt = "";

int n = str.length(); // 4

String[] result = new String[n]; //you want your String array to contain 4 strings

for (int i = 0; i < str.length(); i++) {
    values = str.substring(i, i + 1);
    join = join + values;
    result[i] = join;
}

for (String s : result) {
    gotIt = gotIt + s;
}

return gotIt; // Expected output: CCoCodCode
}

以下语句不是必需的:

int size = 0;

    for (int i = n; i >= 1; i--) {
        size = size + n; // 4+3+2+1=10
    }

您只需要更改数组大小即可

String[] result = new String[size];

String[] result = new String[n];

为您的程序提供预期的输出。

如果我正确理解您的问题以打印图案,那么您可以使用以下代码,

public String printPattern(String input){    
//Holds the iteration value by index
int previous=0;
//It holds the result characters
String result=null;
StringBuilder strBuilder=new StringBuilder();
//first loop to iterate only till input string length
for(int i=0;i<input.length();i++){
    //checking iteration lenght with input string length 
    if(previous<input.length()){
        //incrementing iteration for reading characters from input string
        previous++;
        //main loop for previous iteration value check and iterate
        for(int j=0;j<previous;j++){
            //converting string to Character array
            char a []=input.toCharArray();
            //using string builder to build the string from characters
            strBuilder.append((a[j]));
            //setting the value to stringbuilder by converting it in string
            result=strBuilder.toString();

        }

    }
}

return result;

}

String input = "Code";
String output[] = IntStream.range(0, input.length()+1)
            .mapToObj(i -> input.substring(0, i))
            .toArray(String[]::new);

大小应为字符串的长度。 代码的长度为4。代码将产生{C,Co,Cod,Code}。

  public String stringSplosion(String str) { // string Say 'Code'
    String join = "", values = "";
    String gotIt = "";

    int n = str.length(); // 4

    String[] result = new String[n];

    for (int i = 0; i < str.length(); i++) {
        values = str.substring(i, i + 1);
        join = join + values;
        result[i] = join;
    }
    System.out.println(Arrays.toString(result));

    for (String s : result) {
        gotIt = gotIt + s;
    }

    return gotIt; // Expected output: CCoCodCode
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM