【问题标题】:Is there any method to solve this output problem or to initialize i [closed]有什么方法可以解决这个输出问题或初始化 i [关闭]
【发布时间】:2021-09-05 15:27:09
【问题描述】:

这是两个相同的代码,第一个是 C++,另一个是 Java。 C++代码编译成功,Java代码报错:

last 没有初始化

但最后,i 的值将是last。但它抛出一个错误,请帮我弄清楚。

C++ 代码:

#include <iostream>
using namespace std;

int main()
{
    int arr[] = {1,2,3,4,5,6};
    int last;
    for(int i=0;i<6;i++)
    {
        cout<<arr[i]; 
        last = i;
    }
    cout<<last;
    return 0;
}

输出:

1234565

Java 代码:

public class Main
{
    public static void main(String[] args) {
        int arr[] = {1,2,3,4,5,6};
        int last;
        for(int i=0;i<6;i++)
        {
           System.out.print(arr[i]);
           last = i;
        }
        System.out.print(last);
        
    }
}

输出:

Main.java:19: error: variable last might not have been initialized
        System.out.print(last);
                         ^
1 error

【问题讨论】:

  • 你可以初始化它。 C+ 方面的良好实践。
  • 编译错误。编译器不够聪明,无法知道 last 总是得到一个值。最后初始化一些东西。

标签: java c++ output


【解决方案1】:

在我看来,您没有先初始化变量。初始化它们是将它们设置为等于一个值:

int a;        // This is a declaration
a = 0;        // This is an initialization
int b = 1;    // This is a declaration and initialization

请注意,Java 原语具有默认值,但正如一位用户在下面评论的那样

当声明为类成员时,它们的默认值为零。局部变量没有默认值

尝试以下方法:

public static void main(String args[]) {
    int arr[] = {1,2,3,4,5,6};
    int last = 0;
    for(int i=0;i<6;i++)
    {
        System.out.print(arr[i]);
        last = i;
    }
    System.out.print(last);
}

【讨论】:

    猜你喜欢
    • 2021-01-17
    • 1970-01-01
    • 1970-01-01
    • 2016-03-09
    • 1970-01-01
    • 2016-01-19
    • 1970-01-01
    • 2021-09-06
    相关资源
    最近更新 更多