Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.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 - Fatal编程技术网

Java 递增字符串的最后一个字母

Java 递增字符串的最后一个字母,java,string,Java,String,在这里,我希望Java的String类有一个replaceLast方法,但它没有,我的代码得到了错误的结果 我正在编写一个程序,在数据结构中搜索与字符串前缀匹配的任何项。但是,由于我使用的是迭代器,因此iter.next()调用返回的最后一项与模式不匹配,因此我想更改搜索字符串,以便将查询的最后一个字符增加一个字母。我的测试代码正在返回[C@b82368将此代码和An作为标题搜索: public String changeLastCharacter(String titleSearch) {

在这里,我希望Java的String类有一个replaceLast方法,但它没有,我的代码得到了错误的结果

我正在编写一个程序,在数据结构中搜索与字符串前缀匹配的任何项。但是,由于我使用的是迭代器,因此iter.next()调用返回的最后一项与模式不匹配,因此我想更改搜索字符串,以便将查询的最后一个字符增加一个字母。我的测试代码正在返回[C@b82368将此代码和
An
作为标题搜索:

public String changeLastCharacter(String titleSearch) {
    char[] temp= titleSearch.toCharArray();

    char lastLetter= temp[temp.length-1];
    lastLetter++;
    temp[temp.length-1]= lastLetter;

    String newTitleSearch= temp.toString();
    return newTitleSearch;
}
首先,这段代码输出的原因是什么? 第二,有没有更好的方法来执行我的解决方案?

您想要:

newTitleSearch = new String(temp);
对于数组,
toString
方法不会被重写;它是通常的
对象。toString
,用于调试。上述方法实际上创建了一个字符串。另一种方法是:

int len = titleSearch.length();
String allButLast = titleSearch.substring(0, len - 1);
newTitleSearch = allButLast + new Character(titleSearch.charAt(len - 1) + 1);
你想要:

newTitleSearch = new String(temp);
对于数组,
toString
方法不会被重写;它是通常的
对象。toString
,用于调试。上述方法实际上创建了一个字符串。另一种方法是:

int len = titleSearch.length();
String allButLast = titleSearch.substring(0, len - 1);
newTitleSearch = allButLast + new Character(titleSearch.charAt(len - 1) + 1);

您的问题是
temp.toString()
。请尝试
String newTitleSearch=new String(temp);

我通过
System.out.println(temp[0]+,“+temp[1]);
在temp[1]add被分配给递增的值之后,就知道了这一点。通过使用IDE的调试器,您可以更轻松地做到这一点


由于数组被正确分配,问题必须出现在
toString()

您的问题是
temp.toString()
。请尝试
String newTitleSearch=new String(temp);

我通过
System.out.println(temp[0]+,“+temp[1]);
在temp[1]add被分配给递增的值之后,就知道了这一点。通过使用IDE的调试器,您可以更轻松地做到这一点


由于数组被正确分配,因此问题必须出现在
toString()

中,每当您看到像
…@
这样的意外输出时,您可能会意外地在某个对象上使用
toString()
,该对象的类继承了
对象的默认实现

默认的
toString()
方法返回一个字符串,该字符串的值由对象的类型名和对象的“标识哈希代码”组成,以十六进制数字表示。在您的示例中,
[C
部分是
char[]
对象的类型名。“[”表示“数组”“C”表示
char
原语类型


默认的
toString()
方法中使用的类型名的形成规则在的javadocs中有完整的文档记录。

每当您看到像
…@
这样的意外输出时,很可能是您意外地使用了
toString()
在某个对象上,该对象的类继承了
对象的默认实现

默认的
toString()
方法返回一个字符串,该字符串的值由对象的类型名和对象的“标识哈希代码”组成,以十六进制数字表示。在您的示例中,
[C
部分是
char[]
对象的类型名。“[”表示“数组”“C”表示
char
原语类型


用于形成默认
toString()中使用的类型名称的规则
方法在javadocs for中有完整的文档记录。

你是说你想让字符串中的最后一个字母按字母顺序排列成下一个字母吗?例如,
aa
变成
ab
?这就是我要找的。我把toString方法与创建新字符串混为一谈,因为我认为Char类有一个toString方法,而r已返回整个数组的字符串。您是说要将字符串中的最后一个字母按字母顺序设置为下一个字母吗?例如,
aa
变为
ab
?这就是我要找的。我将toString方法与创建新字符串混为一谈,因为我认为Char类具有返回整个数组。我想它是这样的。我按照一个例子,把最后一行代码弄混了。现在我该结束了。吹毛求疵:“字符数组toString方法类似于默认的…”。实际上,它>>is@Stephen,谢谢,我忘记了数组说明符(“[C”)只是类名。我尝试了这个代码,但没有成功。我认为charAt()+1被转换为int,然后int作为字符串添加到allButLast中。@Eyal,谢谢。我认为现在应该修复它。注意,虽然这只是另一种实现。第一种实现更简单。我想它是这样的。我在遵循一个示例并混淆了最后一行代码。现在是时候结束了。吹毛求疵:“字符数组toString方法类似于默认…”。实际上,它>>is@Stephen,谢谢,我忘了数组说明符(“[C”)只是类名。我尝试了这段代码,但没有成功。我认为charAt()+1被转换为int,然后int作为字符串添加到allButLast中。@Eyal,谢谢。我认为现在应该修复它。注意,虽然这只是一个替代实现。第一个更简单。感谢您的澄清。我不太习惯于字符串,所以不熟悉意外的输出。您确实了解到了这一点我每天都在学习新的东西。谢谢你的澄清。我不太习惯使用字符串,所以不熟悉意外的输出。你真的每天都在学习新的东西。