Java 有什么方法可以更容易地做到这一点吗?
我对java是新手,我从大学开始学习。 我的问题是…在学习java的最后,我会发现有n种更好的方法来做同样的事情?我只是想加快学习的进程 有我的代码,如果有人能给我一个更好的方法,这样我可以理解的例子。谢谢Java 有什么方法可以更容易地做到这一点吗?,java,Java,我对java是新手,我从大学开始学习。 我的问题是…在学习java的最后,我会发现有n种更好的方法来做同样的事情?我只是想加快学习的进程 有我的代码,如果有人能给我一个更好的方法,这样我可以理解的例子。谢谢 public static void main(String[] args) { toMillesPerHour(50); toMillesPerHour(90); toMillesPerHour(100); toMillesP
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[]{…}只有当你想用它来表达的时候才有意义。从一个简单的帖子我学到了很多,你是对的,现在对我来说也有意义。很棒的家伙!!保持这样。从一个简单的帖子我学到了很多,你是对的,现在对我来说也有意义。很棒的家伙!!保持这样。