相关疑难解决方法(0)

Java是否识别无限循环?

给出以下代码示例:

public class WeirdStuff {

    public static int doSomething() {
        while(true);
    }

    public static void main(String[] args) {
        doSomething();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是一个有效的Java程序,虽然方法doSomething()应该返回一个int但从来没有.如果你运行它,它将以无限循环结束.如果将while循环的参数放在一个单独的变量中(例如boolean bool = true),编译器会告诉你在这个方法中返回一个int.

所以我的问题是:这是Java规范中的某个地方,是否存在这种行为可能有用的情况?

java loops while-loop

25
推荐指数
3
解决办法
5743
查看次数

为什么在Java中使用if语句发出错误,即使它总是如此?

可能重复:
编译器抱怨"缺少返回语句",即使无法达到返回语句丢失的条件

Java中的以下方法编译得很好.

public String temp() {
    while(true) {
        if(true) {
            // Do something.
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

该方法有一个显式的返回类型,尽管它编译得很好但java.lang.String没有return语句.但是,以下方法无法编译.

public String tempNew() {
    if(true) {
        return "someString";
    }        
}
Run Code Online (Sandbox Code Playgroud)

发出编译时错误,指示" 缺少return语句 ",即使使用该if语句指定的条件始终为true(它具有boolean永远不会通过反射更改的常量).为了成功编译,必须修改该方法,如下所示.

public String tempNew() {
    if(true) {
        return "someString";
    } else {
        return "someString";
    }
}
Run Code Online (Sandbox Code Playgroud)

要么

public String tempNew() {
    if(true) {
        return "someString";
    }

    return "someString";
}
Run Code Online (Sandbox Code Playgroud)

关于while循环的第一种情况,第二种情况似乎是合法的,尽管它无法编译.

在第二种情况下是否有一个原因超出了编译器的一个特性.

java loops if-statement

9
推荐指数
1
解决办法
229
查看次数

C#Downcasting列出IList"特殊战术"

所以我在一家公司工作,我在这里相对比较新,但我在一些生产代码中遇到了一些非常奇怪的东西,我告诉他们是由一个在C#中更有知识的人写的,而不是"我做了特别的事".办法".因此,我试图想出理由去做我要解释的事情,给出怀疑的好处,但我无法想出任何东西.

IList<Facility> Facilities = new List<Facility>();

上面这一行是问题的核心......整个代码中的其他奇怪之处在于无法使用某些东西的接口,因此在使用它们之前必须将数据复制回List中(例如导出通过webservice,不允许使用接口,必须是IList的实现)

现在我理解接口是很棒的,你可以编写方法,期望接口中的方法存在于传递给你的方法的实现上但是...

有人可以帮助我在这里...任何人都可以想到你立即将List转发回应用程序数据层中的界面的原因吗?

另外,为了清楚起见......这些列表也不用于可互换的数据类型,这发生在定义和存储List的位置,并且存储了每个数据类型的IList.

谢谢!

c#

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

为什么这个for语句在Java中显示死代码?

在这个类中,我定义了一个构造函数,它初始化一个数组并用Point2D.Double填充它.我想定义一个toString方法,输出数组中的Point2D.Double.所以在toString方法中,我创建一个for循环,返回数组中的每个Point2D.Double.问题是,我不知道为什么Eclipse告诉我for语句中的更新是死代码.

import java.awt.geom.Point2D;


public class SimplePolygon {

    public int n; // number of vertices of the polygon
    public Point2D.Double[] vertices; // vertices[0..n-1] around the polygon
                                // boundary

public SimplePolygon(int size) {
    n = size;
    vertices = new Point2D.Double[n]; // creates array with n size. Elements are doubles.
    for(int i = 0; i < n; i++)
    {
        Point2D.Double point = new Point2D.Double(Math.random() * 6, Math.random() * 6);
        vertices[i] = point;
    }

}

public String toString() {
    for(int i = 0 ; …
Run Code Online (Sandbox Code Playgroud)

java arrays

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

标签 统计

java ×3

loops ×2

arrays ×1

c# ×1

if-statement ×1

while-loop ×1