当前位置: 首页 > 面试题库 >

Java程序中if语句中的范围错误

常甫
2023-03-14
问题内容

至少在if语句中,我遇到了范围问题,我很确定那是我的错误所在,而且我不确定如何解决该问题(我在编程方面很新)。

基本上,似乎如果我在if语句中声明某些内容,则该变量(在这种情况下为结构数组)在if语句之外不存在。但是,由于数组的大小取决于N,因此我确实需要将数组的声明置于if
/ else内部,那么如何解决此错误?

该程序使用Java,并且我正在使用Eclipse。非常感谢任何见解。

//declare an int (used in determining array length)
int N = 4;

//declare instance of MyClass
MyClass myClass = new MyClass();

//declare and array, then initialize each struct in that array
        if(N <= 26){
            MyStruct array[] = new MyStruct[260];
            for(int i = 0; i < array.length; i++){
                array[i] = new MyStruct();
            }
        }

        else{
            MyStruct array[] = new MyStruct[N*10];
            for(int i = 0; i < array.length; i++){
                array[i] = new MyStruct();
            }

//lots of other code goes here of stuff that needs to be done before myMethod can be called

//call a method in myClass that requires 'array' to be passed in
myClass.myMethod(array);     // ERROR - ARRAY CANNOT BE RESOLVED TO BE A VARIABLE

问题答案:

您需要将数组声明MyStruct array[]; 之外
的的if块。实际上,您回答了自己的问题,当您在一个块(由包围的一段代码{})中声明一个局部变量时,根据Java语言的作用域规则,该变量将仅在该块内部可见。

您可以 ifelse 执行的操作将数组实例化为正确的大小,如下所示:

MyStruct[] array;

if (N <= 26) {
    array = new MyStruct[260];
    for (int i = 0; i < array.length; i++) {
        array[i] = new MyStruct();
    }
}

else {
    array = new MyStruct[N*10];
    for (int i = 0; i < array.length; i++) {
        array[i] = new MyStruct();
    }
}

甚至更短的解决方案是:

MyStruct[] array = new MyStruct[N <= 26 ? 260 : N*10];
for (int i = 0; i < array.length; i++) {
    array[i] = new MyStruct();
}


 类似资料:
  • 问题内容: 我正在通过一系列解释和练习来学习Java,其中之一是创建一个程序,该程序将根据多个点(0–29、30–34、35)显示数字等级(0-5) –39、40–44、45–49、50-60)。 该程序的工作方式是由于命令重叠而给出正确的等级,但是有什么方法可以创建一系列满足if / else语句条件的数字或字符串?例如,如果输入的数字在40-44之间,依此类推。由于我是新来的,所以详细的答案将

  • 问题内容: i=0 for f in do echo “i value is $i” if [“$i” = “0”] then echo “here” i=$((i+1)) continue fi arr[i]=$f i=$((i+1)) done 在上面的bash脚本中,我在使用if语句时出现了一个错误,它看起来像这样 请指出我的错误。 问题答案: 采用 在bash,你需要周围的空间,并在条件

  • 问题内容: 我只使用python从python中读取: 我对变量my_count的范围感到困惑。虽然打印效果很好,但是最好先用语句在外部做一些事情(例如,在C中用于做int ) 问题答案: 一个语句也 不能创建一个范围 (比如,和不要么创建一个范围)。 结果,Python将分析代码并看到您在语句中进行了赋值,从而使变量成为局部变量(在实际范围内)。 在Python中,变量不需要在 所有代码路径 中

  • 我试图理解switch语句。所以我已经解决了这个问题。“软件公司销售的软件包零售价为99美元。数量折扣如下: 10-19=20% 20-49=30% 50-99=40% 100或更多=50% 编写一个程序,要求用户输入购买的软件包数量。然后,程序应显示折扣金额(如果有)和折扣后的购买总额。 我使用结构和几个关系运算符,它看起来像这样 我想知道是否可以将可能的数字范围存储在单个变量中,然后将其用于语

  • 假设您有一个二进制文件,其中包含类型为int或double的数字。您不知道文件中数字的顺序,但它们的顺序记录在文件开头的字符串中。字符串由表示int的字母i和表示double的字母d组成,按后续数字类型的顺序排列。字符串是使用writeUTF方法写入的。 例如,字符串“iddiiddd”表示该文件包含八个值,如下所示:一个整数,后跟两个双精度,后跟两个整数,后跟三个双精度。 我的问题是,如果字符串

  • 我们可以像这样使用if-field: 但是这里有一些问题,我不明白为什么。 > 如果我运行(count已定义),则会引发错误: 我们能不能先分配一个值? 当我运行count=1 if False else l.append(count 1)(注意:count=0,l=[])时,将引发一个错误: l的结果是。 使用相同的条件,如果使用if-else块,则不会出现错误。 你能解释一下区别吗?