我正在尝试按字母顺序对字符串排序,但是在行中遇到了一个错误:
sb.charAt(j)=sb.charAt(j+1);
编译器将错误显示为 expected variable; found value
其余代码如下:
import java.util.Scanner;
class a
{
public static void main(String[] agrs)
{
Scanner sc = new Scanner(System.in);
String s = sc.next();
StringBuffer sb = new StringBuffer();
sb.append(s);
for(int i = 0; i< s.length(); i++)
{
for(int j = 0; j<s.length(); j++)
{
if(s.charAt(j)>s.charAt(j+1)){
char temp = s.charAt(j);
sb.charAt(j)=sb.charAt(j+1);
sb.charAt(j+1)=temp;
}
}
}}}
请帮助我,因为我是一个初学者,我不知道为什么会发生这个问题,谢谢。
4条答案
按热度按时间fbcarpbf1#
这看起来像是一个家庭作业,其目标是对输入的文本中的字符进行排序,因此如果您输入
gfedbca
结果应该是defg
.您已经收到一条评论,告诉您问题所在:
StringBuffer#charAt()
不返回对stringbuffer的内部数组的引用,您可以更改该数组的值。根据实际分配,您可以调用stringbufferssetCharAt
方法,或者您可以使用另一种方法,将要排序的文本转换为char数组并在其中进行排序。实际上,jvm中有帮助程序类,它们为您提供帮助,请看一看类java.util.Arrays
bqucvtff2#
字符串缓冲区
charAt
只返回char
在索引处,如果要交换两个字符,则需要使用setter,因此可能需要执行以下操作:ghhkc1vu3#
正如许多人已经回答的那样,这个问题正在解决
charAt(index)
您正在使用,因为这将返回给定索引处的字符,而不是在索引位置设置字符。我的回答是改变你的分类方法。对于更简单的解决方案,如果使用较小的数据集(如您的问题),则应使用预定义的排序算法(如插入排序),您可以从以下位置获得算法的帮助:http://www.geeksforgeeks.org/insertion-sort/vfwfrxfs4#
此方法只能返回值,不能设置值,我猜您可能要使用此方法:
它能满足你的要求