我遇到两个小的意外类型错误,我无法解决这个问题。
错误发生在:
swapped.charAt(temp1) = str.charAt(temp2);
swapped.charAt(temp2) = temp1;
有什么建议吗?
public class SwapLetters
{
public static void main(String[] args)
{
System.out.println("Enter a string: ");
String str = new String(args[0]);
String swapped = str;
char[] charArray = str.toCharArray();
System.out.println("Enter a position to swap: ");
int Swap1 = Integer.parseInt(args[1]);
System.out.println("Enter a second position to swap: ");
int Swap2 = Integer.parseInt(args[2]);
char temp1 = str.charAt(Swap1);
char temp2 = str.charAt(Swap2);
swapped.charAt(temp1) = str.charAt(temp2);
swapped.charAt(temp2) = temp1;
System.out.println("Original String = " + str);
System.out.println("Swapped String = " + swapped);
}
}
答案 0 :(得分:2)
您可以为变量赋值,而不是其他值。像5 = 2
或'a' = 'z'
这样的语句在Java中不起作用,这就是您收到错误的原因。 swapped.charAt(temp1)
会返回您尝试覆盖的某些char
值,它不是对String
中特定位置的引用,也不是您可以更改的变量(也是,请注意Java字符串是不可变的,所以在创建之后你无法以任何方式真正改变它们。
有关使用String
的信息,请参阅http://docs.oracle.com/javase/7/docs/api/java/lang/String.html,它应该为您要执行的操作提供解决方案。
如果index参数为负数,您的代码甚至可能抛出IndexOutOfBoundsException 小于这个字符串的长度。检查每根弦的长度。
答案 1 :(得分:2)
您分配的左侧无法接收该值。
答案 2 :(得分:-1)
返回指定索引处的char值
返回角色的值;在以下行中为该返回值赋值是问题所在:
swapped.charAt(temp1) = str.charAt(temp2);
swapped.charAt(temp2) = temp1;
此外,String#charAt(int)
期望字符串中的字符的索引,而不是字符本身(即chatAt(temp1)
不正确),因此您的方法将无法按预期工作即使你解决了以前的问题。
尝试以下方法:
String swapped;
if(swap1 > swap2) {
swap1+=swap2;
swap2=swap1-swap2;
swap1-=swap2;
}
if(swap1!=swap2)
swapped = str.substring(0,swap1) + str.charAt(swap2) + str.substring(swap1, swap2) + str.charAt(swap1) + str.substring(swap2);