2014-11-22 1 views
1

Как заменить определенный индекс индекса? Я попробовал StringBuilder, проблема только, что я хочу, чтобы заменить индекс с переменной:StringBuilder, заменить индекс на переменную

if (org == m2) { 
    System.out.println(eingabe + " ist eine g\u00fcltige ISBN."); 
    } 
    else { 

    if (eingabe.length() ==13) { 
     StringBuilder correct = new StringBuilder(eingabe); 
     correct.setCharAt(13, m2); 
     System.out.println(eingabe + " ist eine fehlerhafte ISBN. \nG\u00fcltig w\u00e4re " + correct); 
    } 
    else if (eingabe.length() ==18) { 
     StringBuilder correct = new StringBuilder(eingabe); 
     correct.setCharAt(18, m2); 
     System.out.println(eingabe + " ist eine fehlerhafte ISBN. \nG\u00fcltig w\u00e4re " + correct);   
    } 
    } 

Ошибка следующим:

isbn.java:36: error: method setCharAt in class AbstractStringBuilder cannot be applied to given types; 
      correct.setCharAt(13, m2); 
       ^
    required: int,char 
    found: int,int 
    reason: actual argument int cannot be converted to char by method invocation conversion 
isbn.java:41: error: method setCharAt in class AbstractStringBuilder cannot be applied to given types; 
      correct.setCharAt(18, m2); 
       ^
    required: int,char 
    found: int,int 
    reason: actual argument int cannot be converted to char by method invocation conversion 

ответ

1

Вы должны сделать

correct.setCharAt(13, (char)m2); 

вместо , поскольку 2-й аргумент setCharAt() должен иметь тип char. Неявное преобразование работает только для рекламных акций (конверсии от более узких к более широким типам, например, от char, что составляет 2 байта - до int, что составляет 4 байта), но не наоборот. В последнем случае вы должны сделать явный листинг, подобный этому: (typeName) variableName.

Кроме того, если оригинал String имеет длину 13, индекс последней позиции будет 12, а не 13, так как позиции нумеруются от 0, а не с 1. Таким образом, ваш призыв заменить последний символ должен быть:

correct.setCharAt(12, (char)m2); 

в первом случае и аналогично во втором случае.

Надеюсь, что это поможет!

+0

сейчас есть следующие ошибки: isbn.java:36: ошибка:».class' ожидается isbn.java:36: ошибка: ';' Ожидается isbn.java:36: ошибка: незаконный старт выражения isbn.java:36: error: ';' Ожидаемый isbn.java:41: error: '.class' expected – kellerprogger

+0

У вас неправильный первый аргумент (позиция символа) в вашем вызове 'setCharAt() - см. мое редактирование. –