2016-10-27 6 views
-1

У меня есть этот способ.Моя переменная не инициализирована?

Ошибка говорит

primeList не может быть инициализирован.

Я не могу понять, как это может быть правдой. Я чувствую, что нет никакой возможности, чтобы переменная не была инициализирована из циклов for.

Я не могу понять, как инициализировать строку

public void primesToANumber(long num) //finds all primes 
{ 
    String primeList ; 
    long pcount; 
    long limit = num; 
    JOptionPane.showMessageDialog(null,"Prime numbers between 1 and " + limit); 
    for(long i = 1; i < 100; i++) 
    { 
     boolean isPrime = true; 
     for(long j = 2; j < i ; j++) 
     { 
     if(i % j == 0) 
      { 
       isPrime = false; 
       break; 
      } 
     } 
     // print the number 
     if(isPrime) 
     { 
      primeList += i + ", "; 
      pcount++; 
      if(pcount % 12 ==0){ 
       primeList += "\n"; 
      } 
     } 
    } 
    JOptionPane.showMessageDialog(null, " " + primeList); 
} 
+10

'Строка primeList =;' не должны даже компилировать – JonK

+1

Вы можете» t используйте '+ =' для переменной, которая не была инициализирована. К чему вы добавляете? – khelwood

+0

Что заставляет вас думать, что переменная/будет инициализирована? – Pshemo

ответ

5

Вы должны инициализировать переменную, так же, как он говорит ...

String primeList = ""; 

Используя пустую строку, то позволит ваш код, чтобы добавить к нему, как вы намереваетесь, получить желаемый результат.


Просто для справки, если вы сделал хотите использовать null по какой-то причине, вы можете «убедить» компилятор вы знаете, что вы делаете, указав его непосредственно:

String primeList = null; 

Этот будет компилироваться отлично, но вы получите ошибку времени выполнения при попытке добавить к пустой строке, поэтому в этом случае не имеет смысла делать это.

+1

Спасибо, что скомпилированы и правильно запущены –

+0

@ Никита Ковинский Если это решение ответило на ваш вопрос, вы должны отметить его как принятый ответ. – bradimus

3

Try:

String primeList = ""; 
long pcount = 0; 

, и я предполагаю, что это должно быть:

for (long i = 1; i < limit; i++) 

InstEd из

for (long i = 1; i < 100; i++) 
Смежные вопросы