Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java-如何处理不可变字符串[]_Java_String_Immutability - Fatal编程技术网

java-如何处理不可变字符串[]

java-如何处理不可变字符串[],java,string,immutability,Java,String,Immutability,我想我理解了为什么我在这个方法中的tmpString={,…}行得到一个编译错误非法启动表达式->tmpString是不可变的,尽管它以前在tmpBase行中没有问题,但是解决这个问题的最干净的方法是什么-可能是另一种变量类型?多谢各位 public static ArrayList<String> myMethod(String tmpWord, int tmpNum) { ArrayList<String> tmpReturn = new ArrayList&

我想我理解了为什么我在这个方法中的tmpString={,…}行得到一个编译错误非法启动表达式->tmpString是不可变的,尽管它以前在tmpBase行中没有问题,但是解决这个问题的最干净的方法是什么-可能是另一种变量类型?多谢各位

public static ArrayList<String> myMethod(String tmpWord, int tmpNum)
{
    ArrayList<String> tmpReturn = new ArrayList<String>(); 
    String   tmpBase   = tmpWord.substring(0,tmpWord.length()-2);
    String[] tmpString = {"a","a","g","g","ya"};
    switch(tmpNum)
    {
        case  1: tmpBase = "xx";
                 break;
        case  2: tmpBase = "yy";
                 break;
        case  3:
                 break;
        default:
        {
            tmpBase   = "-";
            tmpString = {"","","","",""};
            break;
        }
    }
    for (int j=0; j<5; j++)
        tmpReturn.add( (tmpBase + tmpString[j]) );
    return tmpReturn;
}

它与不变性无关数组不是不变性的。此语法:

String[] array = { ... };
只能在声明数组变量时使用

如果要在声明数组后为其分配新值,则需要使用:

tmpString = new String[] {"","","","",""};

直接数组初始值设定项仅在声明变量时可用。 对于以后的作业,请使用合格的初始值设定项:

tmpString = new String[]{"", "", "", "", ""};

编译错误与字符串的不变性无关。没什么。可能是好的,谢谢你。它现在可以编译了,但是tmpBase没有改变。对此的更正是否类似?我已经/正在试几次things@Mike如果您的编译错误问题已解决,请将此答案标记为解决方案。现在你可以在自己尝试解决一段时间后再问一个问题。请看一看。@Mike听起来是学习如何使用调试器并逐步检查代码以了解发生了什么的最佳时机。assylias-到目前为止,我是手动调试的,但将对此进行研究。thanks@Mike如果您使用IDE,那么必须在某个地方有一个调试函数,该函数应该相当容易使用,并允许您查看代码路径和变量的值。如果您不使用IDE,您可以添加一些打印语句,但这会更麻烦。