Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有什么方法可以更容易地做到这一点吗?_Java - Fatal编程技术网

Java 有什么方法可以更容易地做到这一点吗?

Java 有什么方法可以更容易地做到这一点吗?,java,Java,我对java是新手,我从大学开始学习。 我的问题是…在学习java的最后,我会发现有n种更好的方法来做同样的事情?我只是想加快学习的进程 有我的代码,如果有人能给我一个更好的方法,这样我可以理解的例子。谢谢 public static void main(String[] args) { toMillesPerHour(50); toMillesPerHour(90); toMillesPerHour(100); toMillesP

我对java是新手,我从大学开始学习。 我的问题是…在学习java的最后,我会发现有n种更好的方法来做同样的事情?我只是想加快学习的进程 有我的代码,如果有人能给我一个更好的方法,这样我可以理解的例子。谢谢

public static void main(String[] args) {
        toMillesPerHour(50);
        toMillesPerHour(90);
        toMillesPerHour(100);
        toMillesPerHour(130);
        toMillesPerHour(-20);
    }
    public static void toMillesPerHour(double kilomettersPerHour) {
        //return round value
        if(kilomettersPerHour >= 0) {
            kilomettersPerHour = (int) kilomettersPerHour / 1.60934;
            int roundKm = (int) kilomettersPerHour;
            System.out.println("You travel with speed of: " + roundKm +" Miles");
        }else {
            System.out.println("Negative value detected");
        }
    }

您可以在数组中定义值并对其进行迭代。然后,每次添加新值时,都不必再次调用toMillesPerHour


您可以在数组中定义值并对其进行迭代。然后,每次添加新值时,都不必再次调用toMillesPerHour


我假设一个具有一定经验的典型Java开发人员会做以下事情:

如果需要对结果进行四舍五入,请将返回类型更改为double int; 当KimetersPerHour<0时引发异常; 在主菜单中打印结果。 比如说,

public static double toMillesPerHour(double kilomettersPerHour) {
    if (kilomettersPerHour < 0) {
        throw new IllegalArgumentException("Negative value detected");
    }

    return kilomettersPerHour / 1.60934;
}

我假设一个具有一定经验的典型Java开发人员会做以下事情:

如果需要对结果进行四舍五入,请将返回类型更改为double int; 当KimetersPerHour<0时引发异常; 在主菜单中打印结果。 比如说,

public static double toMillesPerHour(double kilomettersPerHour) {
    if (kilomettersPerHour < 0) {
        throw new IllegalArgumentException("Negative value detected");
    }

    return kilomettersPerHour / 1.60934;
}

您可以进行steven35建议的更改,但在toMilesPerHour方法中,您不应该使用参数变量来存储除数结果。与此相反,您应该执行以下操作:

int milesPerHour = (int)kilometersPerHour / 1.60934

通过这种方式,您不需要使用任何附加变量来对结果进行四舍五入。修改参数变量也是一种不好的做法。

您可以根据steven35的建议进行更改,但在toMilesPerHour方法中,您不应该使用参数变量存储除数结果。与此相反,您应该执行以下操作:

int milesPerHour = (int)kilometersPerHour / 1.60934

通过这种方式,您不需要使用任何附加变量来对结果进行四舍五入。修改参数变量也是不好的做法。

您可以使用Math.round获得更准确的结果

public static void main(String[] args) {
    toMillesPerHour(50);
    toMillesPerHour(90);
    toMillesPerHour(100);
    toMillesPerHour(130);
    toMillesPerHour(-20);
}
public static void toMillesPerHour(double kilomettersPerHour) {
    //return round value
    if(kilomettersPerHour >= 0) {
        kilomettersPerHour = kilomettersPerHour / 1.60934;
        int roundKm = (int) Math.round( kilomettersPerHour );            
        System.out.println("You travel with speed of: " + roundKm +" Miles");
    }else {
        System.out.println("Negative value detected");
    }
}

您可以使用Math.round获得更精确的结果

public static void main(String[] args) {
    toMillesPerHour(50);
    toMillesPerHour(90);
    toMillesPerHour(100);
    toMillesPerHour(130);
    toMillesPerHour(-20);
}
public static void toMillesPerHour(double kilomettersPerHour) {
    //return round value
    if(kilomettersPerHour >= 0) {
        kilomettersPerHour = kilomettersPerHour / 1.60934;
        int roundKm = (int) Math.round( kilomettersPerHour );            
        System.out.println("You travel with speed of: " + roundKm +" Miles");
    }else {
        System.out.println("Negative value detected");
    }
}
你可以用它允许您删除大量代码

你不需要双倍

使用参数作为局部变量不是很好的方法。 看看:

class Printer {
    public static void main(String[] args) {
        toMillesPerHour(50, 90, 100, 130, -20);
    }

    public static void toMillesPerHour(int... kilomettersPerHour) {
        Arrays.stream(kilomettersPerHour).forEach(Printer::printRound);
        //return round value
    }

    private static void printRound(int kmPerHour) {
        String message = (kmPerHour >= 0) ? calculate(kmPerHour) : "Negative value detected";
        System.out.println(message);
    }

    private static String calculate(int kmPerHour) {
        int roundKm = (int) (kmPerHour / 1.60934);
        return "You travel with speed of: " + roundKm + " Miles";
    }
}
你可以用它允许您删除大量代码

你不需要双倍

使用参数作为局部变量不是很好的方法。 看看:

class Printer {
    public static void main(String[] args) {
        toMillesPerHour(50, 90, 100, 130, -20);
    }

    public static void toMillesPerHour(int... kilomettersPerHour) {
        Arrays.stream(kilomettersPerHour).forEach(Printer::printRound);
        //return round value
    }

    private static void printRound(int kmPerHour) {
        String message = (kmPerHour >= 0) ? calculate(kmPerHour) : "Negative value detected";
        System.out.println(message);
    }

    private static String calculate(int kmPerHour) {
        int roundKm = (int) (kmPerHour / 1.60934);
        return "You travel with speed of: " + roundKm + " Miles";
    }
}

我对这段代码最大的一个问题是toMilesPerHour50这个名字;只讲了一半的故事。50什么?别让我往里看才明白

不相信?好的,现在我需要一个方法,将每秒英尺数转换为每小时英里数。我该给它取什么名字才不会引起混乱


如果您的方法挂起了一个名为km/hour的类型,那么这个名称就可以了,但是这个名称会使抽象失败。我得看看里面是什么意思

我对这段代码最大的一个问题是toMilesPerHour50这个名字;只讲了一半的故事。50什么?别让我往里看才明白

不相信?好的,现在我需要一个方法,将每秒英尺数转换为每小时英里数。我该给它取什么名字才不会引起混乱


如果您的方法挂起了一个名为km/hour的类型,那么这个名称就可以了,但是这个名称会使抽象失败。我得看看里面是什么意思

这是体验的一部分。做大多数事情没有单一的最佳方式。可能有几种同样有效的解决方案,人们对哪一种方案最好持不同意见。正确地学习软件开发需要数年时间,而且没有捷径可走。至于你问题中的代码,为什么你认为它可以改进?当你没有错误但努力改进时如何?不幸的是,对于StackOverflow这样的格式,这是一个糟糕的问题。也许问这样一个问题会更好,但我在那里不太活跃。一个改进是,不要再使用公里数望远镜来保持每小时英里数。这是误导,使阅读代码更加困难。此外,圆公里实际上包含英里,而不是公里。。因此,取而代之的是圆英里。嗨,米海,欢迎!与StackOverflow相比,代码审查组Stack Exchange组也需要更多的时间。这是体验的一部分。做大多数事情没有单一的最佳方式。可能有几种同样有效的解决方案,人们对哪一种方案最好持不同意见。正确地学习软件开发需要数年时间,而且没有捷径可走。至于你问题中的代码,为什么你认为它可以改进?当你没有错误但努力改进时如何?不幸的是,对于StackOverflow这样的格式,这是一个糟糕的问题。也许问这样一个问题会更好,但我在那里不太活跃。一个改进是,不要再使用公里数望远镜来保持每小时英里数。这是误导,使阅读代码更加困难。此外,圆公里实际上包含英里,而不是公里。。那就叫它圆英里吧
蒂德,嗨,米海,欢迎你!与StackOverflow相比,这对于代码审阅组Stack Exchange组也更为重要。在这种情况下,您可以省去新的int[]部分,或者使用新的int[]{…}而不是for:for int值中的值:new int[]{…}{.这不是更可读吗?在循环中定义数组?如果有很多元素呢?请省去新的double[]部分。就像double[]values={…}。这是一个很好的建议。这是我第一个评论的要点。new[]{…}仅当您想将其用作表达式时才有意义。在这种情况下,您可以省去新的int[]部分,或者使用新的int[]{…}而不是for:for int value:new int[]{…}{。但是这不是更可读吗?在循环中定义数组?如果有很多元素怎么办?请省去新的double[]part.As in double[]values={…}。这是一个很好的建议。这是我第一次评论的要点。new[]{…}只有当你想用它来表达的时候才有意义。从一个简单的帖子我学到了很多,你是对的,现在对我来说也有意义。很棒的家伙!!保持这样。从一个简单的帖子我学到了很多,你是对的,现在对我来说也有意义。很棒的家伙!!保持这样。