【问题标题】:My variable is not initialized? [duplicate]我的变量没有初始化? [复制]
【发布时间】:2017-03-10 04:17:54
【问题描述】:

我有这个方法。

错误提示

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);
}

【问题讨论】:

  • String primeList =; 甚至不应该编译
  • 您不能在尚未初始化的变量上使用+=。你要添加什么?
  • 投反对票是怎么回事?对于新用户来说,这是一个很好的问题!
  • @musefan 当然可以,但是在 google 或 this site 上进行简单的搜索就会发现这样的骗子可以解决问题...stackoverflow.com/q/2448843/5647260 - 否决工具提示说“确实不显示研究”
  • @AndrewLi 我研究并探索了类似的问题,但我无法弄清楚它与我的关系。

标签: java


【解决方案1】:

你需要初始化你的变量,就像它说的那样......

String primeList = "";

然后,使用空字符串将允许您的代码按照您的意愿附加到它,以获得您想要的结果。


仅供参考,如果您确实出于某种原因想要使用null,您可以通过直接指定它来“说服”编译器您知道自己在做什么:

String primeList = null;

这可以正常编译,但是当您尝试追加到空字符串时会出现运行时错误,因此在这种情况下这样做没有意义。

【讨论】:

  • 谢谢,编译运行正确
  • @NikitaKovinskiy 如果这解决了您的问题,您应该将其标记为已接受的答案。
【解决方案2】:

试试:

String primeList = "";
long pcount = 0;

我猜应该是:

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

插入

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-23
    • 1970-01-01
    • 1970-01-01
    • 2016-10-03
    • 2022-01-02
    • 1970-01-01
    • 2020-02-29
    • 1970-01-01
    相关资源
    最近更新 更多