相关疑难解决方法(0)

Java中的默认值和初始化

根据我的参考,基本类型具有默认值,对象为空.我测试了一段代码.

public class Main {
    public static void main(String[] args) {
        int a;
        System.out.println(a);
    }
}
Run Code Online (Sandbox Code Playgroud)

该行将System.out.println(a);是指向变量的错误a,variable a might not have been initialized而在给定的引用中,该变量integer将具有0默认值.但是,使用下面给出的代码,它实际上会打印出来0.

public class Main {
    static int a;
    public static void main(String[] args) {
        System.out.println(a);
    }
}
Run Code Online (Sandbox Code Playgroud)

第一个代码可能出现什么问题?类实例变量的行为是否与局部变量不同?

java initialization global-variables local-variables default-value

71
推荐指数
4
解决办法
13万
查看次数

在Java中处理未初始化的字符串

这是我作为家庭作业所做的一个小程序的一部分:

public Exam maxGrade() {
    Node p = firstNode;
    int max = 0;
    String name;
    while (p!=null) {
        if (p.info.getGrade()>max) {
            max = p.info.getGrade();
            name = p.info.getName();
        }
        p = p.next;
    }

    if (name==null)
        return null;
    else
        return searchByName(name);
}
Run Code Online (Sandbox Code Playgroud)

因此,当我继续编译时,编译器输出以下消息:

Student.java:127:错误:如果(name == null),可能尚未初始化变量名称

用以下代码替换第四行可以很容易地解决这个问题:

String name = null;
Run Code Online (Sandbox Code Playgroud)

现在,我可以看到一些逻辑.但我真的很想掌握这个问题背后的运作方式.我的意思是,如果变量在你的代码中看到你正在对它做一些事情,那么编译器会检查变量是否被初始化似乎是合理的,但我认为我没有做任何需要初始化变量的事情.

据消息人士透露像这样的时候,我只是申报我的字符串(或任何其它对象)变量"名",它已经指向NULL.那么为什么仅仅检查该值是否为空它被认为是异常?除了赋值之外,编译器是否会考虑我对未初始化变量所做的任何错误?

java compiler-errors initialization object

5
推荐指数
1
解决办法
6519
查看次数

根据条件声明一个final变量并在java中的lambda中使用它

我有以下场景。

我想在 lambda 表达式中使用变量。但是这个变量将根据条件具有一次性值(最终)。

  final String constraintsAmount;
  if(constraint.isPresent()) {
       constraintsAmount = constraint.getValue();
  }
Run Code Online (Sandbox Code Playgroud)

之后,我开始使用 forEach + lambda 表达式迭代列表。现在我必须constraintsAmount在这次迭代中使用这个字段。

但它说“constraintsAmount可能尚未初始化”。

我该如何解决这个问题。

笔记 :

  1. 我不想将此变量声明为实例变量,并且我当然不想在迭代内声明和初始化此变量。
  2. 因为它是最终的,所以我无法初始化它,然后在 if 检查中重用它。所以想检查一下解决办法。

java lambda

2
推荐指数
1
解决办法
3661
查看次数

为什么这个Java代码会产生错误?

我尝试用Java编译这段代码:

class D
{
    public static void main(String arg[])
    {
        f1();
    }

    static void f1()
    {
        int a;
        int b=5;
        for(;b<=10;b++)
            a=b;
        System.out.println(a);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是它会产生一个错误,表示:变量'a'可能尚未初始化.为什么会发生这种情况,尽管a在for循环中设置了?

java

0
推荐指数
1
解决办法
101
查看次数

错误:变量可能尚未初始化

收到错误:

Pay.java:81:错误:变量hourlyWage可能尚未初始化JOptionPane.showMessageDialog(null, hourlyWage);

对于以下代码.hourlyWage声明了double ,这些语句在主要参数内.看不到我错过的东西,对吗?

if(skillInt == 1){
    hourlyWage = 17.00;
} else if(skillInt == 2){
    hourlyWage = 20.00;
} else if(skillInt == 3){
    hourlyWage = 22.00;
}
JOptionPane.showMessageDialog(null, hourlyWage);
Run Code Online (Sandbox Code Playgroud)

java

0
推荐指数
1
解决办法
1078
查看次数

变量可能尚未初始化

对于我的Comp Sci课程,我必须创建一个程序来查找给定月份(1-12)中的天数,你知道为什么我在尝试时遇到错误"变量天数可能没有被初始化"从交换机返回int"days"?这是代码:

public static int getNumberofDays(int month,int year)
   {
      // Imports the required Scanner
      Scanner kbd = new Scanner(System.in);

      final String month;
      final int days;
      switch (month) {
         case 1:  days = 31;
            break;
         case 2:  if ((year % 4 == 0) && year % 100 != 0)
                  {
                     days = 29;
                  }
                  else if ((year % 4 == 0) && (year % 100 == 0) && (year % 400 == 0))
                  {
                     days = 29;
                  }
                  else
                  {
                     days …
Run Code Online (Sandbox Code Playgroud)

java variables initialization

-1
推荐指数
1
解决办法
883
查看次数

我的变量没有初始化?

我有这个方法.

错误说

primeList可能尚未初始化.

我无法理解这是怎么回事.我觉得变量不会被for循环初始化.

我无法弄清楚如何初始化String

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 % …
Run Code Online (Sandbox Code Playgroud)

java

-1
推荐指数
1
解决办法
195
查看次数

尽管有 if/else 语句(两种情况下都已初始化),但我遇到“变量可能尚未初始化”的问题

protected int getGewichtung(String company)
{
    int index;

    for (HashMap<String,String> i : top3Compland) 
    {
        String test = String.join(_name, i.keySet());
        System.out.println(test);

        if (test == company) 
        {
            index = top3Compland.indexOf(i);
            
        } 
        else 
        {
            index = -5; 
        }
    }
    
    return index;
}
Run Code Online (Sandbox Code Playgroud)

我已经用 print 语句检查了它是否完全进入了 for 循环。但是所有的键都被打印出来,所以它确实输入了它,并且也确实发生了到字符串的转换,因为我首先只将有效的字符串放入函数中,所以它也必须肯定输入 if 语句,但即使它不输入然后它会输入 else 语句并用一个数字初始化它,这样它就不会抱怨变量“index”可能没有被初始化。我在监视什么??感谢您的帮助!

更新版本:我改进了一些缺陷,但出现了同样的错误。但我无法理解索引未初始化的情况......

    protected int getGewichtung(String company)
{
    int index;


   
    if (top3Compland.size() > 0 && top3Compland != null) 
    {
        for (HashMap<String,String> i : top3Compland) 
        {
            String test = String.join(_name, i.keySet());
            System.out.println(test);

            if (test.equals(company)) 
            {
                index …
Run Code Online (Sandbox Code Playgroud)

java variables initialization

-1
推荐指数
1
解决办法
55
查看次数