Java if заявления - PullRequest
       2

Java if заявления

0 голосов
/ 06 февраля 2011

Почему последняя строка этого кода не берет строку filename в коде?

if (ressound == R.id.sound1) {
    String filename = "sound1" + ".ogg";
} else {
    String filename = "sound1" + ".ogg";
}
boolean exists = (new File(path)).exists();   
if (!exists) { new File(path).mkdirs(); }   

FileOutputStream save;
try { 
    save = new FileOutputStream(path + filename);  

Ответы [ 2 ]

13 голосов
/ 06 февраля 2011

Вы объявляете переменную в области действия ветви if if else.Вне этой области переменная недоступна.

Используйте это вместо:

String filename;
    if (ressound == R.id.sound1) {
           filename="sound1"+".ogg";
       } else{
            filename="sound1"+".ogg";
       }
             boolean exists = (new File(path)).exists();   
             if (!exists){new File(path).mkdirs();}   

             FileOutputStream save;
             try { 
              save = new FileOutputStream(path+filename);  
3 голосов
/ 06 февраля 2011

Ваш код в том виде, в каком он есть, даже не скомпилируется, поскольку обе объявленные вами переменные filename вышли из области видимости, в которой вы создаете FileOutputStream.

Я бы сделал это:

private String getFilename() {
    if (ressound == R.id.sound1) {
        return "sound1"+".ogg";
    }
    return "sound1"+".ogg";
}

А затем вызовите его из другого метода:

boolean exists = (new File(path)).exists();   
if (!exists){ new File(path).mkdirs(); }   

FileOutputStream save;
try { 
    save = new FileOutputStream(path+getFilename()); 

Как я уже сказал в комментарии выше, я не знаю, почему вы присваиваете одинаковое значение имени файла в обоих случаях, как вgetFilename() всегда возвращает "sound1.ogg".Может быть, это была твоя ошибка, но я оставил ее как есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...