小白自学,大家帮忙看看这个程序是否正确?

2017-10-23 22:00:19 +08:00
 weiyuzhou

门外汉自学入门,刚刚看到 if 分支语句,做完了书上的习题输入三个数并输出最大数的习题后我就在想能不能更难一点,输入四个数试试?然后我就瞬间感觉脑子不够用了,反反复复写了近半个小时写出了下面的代码,测试了一下好像也没有什么问题,但是总感觉怪怪的...

想请教下大家这段代码对不对或者是否有任何需要改进的地方? 我知道肯定有更简单的算法,但是鉴于别的我也看不懂,所以就限定是用判断语句并且不考虑特殊情况。 代码如下:

import java.util.Scanner;

public class Largest {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("Please enter four numbers: ");
        int number1 = input.nextInt();
        int number2 = input.nextInt();
        int number3 = input.nextInt();
        int number4 = input.nextInt();
        int largest = 0;

        if (number1 > number2) {
            if (number1 > number3) {
                if (number1 > number4) {
                    largest = number1;
                }else {
                    largest = number4;
                }
            }else {
                if (number3 > number4) {
                    largest = number3;
                }else {
                    largest = number4;
                }
            }
        }else if (number2 > number3) {
            if (number2 > number4) {
                largest = number2;
            }else {
                largest = number4;
            }
        }else {
            if (number3 > number4) {
                largest = number3;
            }else {
                largest = number4;
            }
        }
        System.out.println(largest);
    }
}
4991 次点击
所在节点    程序员
54 条回复
leemove
2017-10-24 09:16:28 +08:00
人生太长我用 js.
```js
Math.max(num1,num2,num3,num4)
```
vincenth520
2017-10-24 09:18:56 +08:00
$arr = [1,2,3,4];
echo max($arr);
人生苦短,php 也不错
meepo3927
2017-10-24 09:22:21 +08:00
if 的用法一般用于控制逻辑分支。

找出最大值适合用 for 循环来做。

这个练习就不用深究了噻
mosliu
2017-10-24 09:25:34 +08:00
定义
public int bigger(int in1,int in2){
return in1>in2?in1:in2
}

然后调用
System.out.println(bigger(bigger(num1,num2),bigger(num3,num4)));
Makcy
2017-10-24 09:29:19 +08:00
[2,1,3].sort[-1] ruby 也不错 :)
zgx030030
2017-10-24 09:37:52 +08:00
就是冒一次泡,循环判断一次。
denano
2017-10-24 09:51:07 +08:00
lz 你也说了做完了 3 个数里找最大值,想试试从 4 个数里找最大值。那再进一步,是不是就是从 n 个数里找最大值呢?如果沿用你现在的思路,需要写多少行代码,穷举多少种情况才能完成?
qiuyk
2017-10-24 10:13:03 +08:00
@denano 然后楼主成功掌握手动展开决策树的精髓 233333
lneoi
2017-10-24 10:32:47 +08:00
运行正确就正确了呗。语法还没看完就继续看语法,不碍事。
然后回头再来改成 N 个数找最大值
fortunezhang
2017-10-24 10:44:17 +08:00
```
def maxNum(a,b):
return a > b ? a: b

max = maxNum(maxNum(number1,number2),maxNum(number3,number4))
```
weiyuzhou
2017-10-24 13:50:13 +08:00
想不到我的帖子会这么火!惭愧,真应该早点学习编程~感谢大家!
ppwangs
2017-10-24 17:57:42 +08:00
冒泡,二分。
ThinkCat
2017-10-24 18:42:53 +08:00
多看看 java8,可以这样:

int max = Stream.of(number1,number2,number3,number4).reduce((a, b) -> a>b?a:b).get();
poorcai
2017-10-25 08:44:11 +08:00
顺带学习了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/400057

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX