Это фрагмент кода. Я уже исправил эту ошибку, но я просто не понимаю, почему она работает сейчас. Я не уверен, правильно ли объяснил это, поэтому, если необходимо, задайте любой вопрос. Ошибка заключается в том, что переменная puncation изменяется на правильное значение test, когда оператор находится в том месте, где я прокомментировал это заявление. Но это не сработает, когда оператор находится в том месте, где я прокомментировал, заявление не работает.Путаница с переменной областью для этой конкретной программы
if (endOfSen) {
/////////////////The statement below works when it is here./////////////
/////////////////OUTPUT 1 - occurs when the statement is placed here.
String puncation = null ;
/////////////////////
int orgSize = words.size(); //remember size of stack
//only runs if stack is not empty
if (!words.empty()) {
while (words.size() > 0) { //until last word
String word = words.pop();
///The statement below does not work when it is here///////
//////OUTPUT 2- occurs when the statement is placed here.
//String puncation = null ;
//if last word of sentence
if (orgSize == words.size() + 1) {
word = word.substring(0, 1).toUpperCase() + word.substring(1);
puncation = "test"; // just a test value
word = word.replace(puncation, "");
//////////////////test to see if works
System.out.println("puncation: " + puncation);
}
//if first word of sentence
if (words.size() == 0) {
//////////////////test to see if works
System.out.println("puncation: " + puncation);
word = word.toLowerCase();
word = word + "" + puncation;
}
newSen.push(word);
}
}
endOfSen = false;
}
}
В 1 (Второй puncation изменяется от исходного значения)
puncation: test
puncation: test
Выхода 2 (Второй puncation не меняется от исходного значения)
puncation: test
puncation: null
какая ошибка? Что вы изменили? – TinyTheBrontosaurus
укажите, когда возникает выход 1 и когда возникает выход 2 –
@TinyTheBrontosaurus Я сделал редактирование, не уверен, помогло ли оно. – name