【问题标题】:Find the smallest number among three numbers using if使用 if 找出三个数中最小的数
【发布时间】:2019-09-19 17:01:02
【问题描述】:

所以我很困惑那些 if 括号中的内容,代码工作正常但我不明白?

public static void main(String[] args) {

    Scanner scanner = new Scanner(System.in);    
    int a = scanner.nextInt(); 
    int b = scanner.nextInt();
    int c = scanner.nextInt();
    if(b < a) {
      a = b; //This part is confusing to me
    }
    if(c < a) {
      c = a; 
    }    
    System.out.println("Smallest number is " + a);
}

【问题讨论】:

  • 该行只是一个常规任务。有什么让你困惑的?
  • @resueman 我认为任务发生在那个特定位置的事实让他们感到困惑。从可读性的角度来看,这确实令人困惑。
  • 我当然不会指责这种方法清晰或富有表现力。 “聪明”浮现在脑海中,“聪明”的代码虽然写起来很有趣,但通常很难支持。但是对于这样一个小程序,请考虑这是一次通过各种输入一次单步执行逻辑的机会。提出几组测试输入并遍历逻辑。它有什么作用?然后你明白它为什么这样做了吗?
  • 比“聪明”还要糟糕,也是错误的。如果c是最小的初始值,则输出ab中较小的一个。
  • 好消息@azurefrog。 c = a; 行完全有一个错误。

标签: java if-statement int java.util.scanner


【解决方案1】:

a 有两个用途:

  1. 它正在存储第一个输入。
  2. 如果新值更小,则会使用新值(来自其他变量,从输入中获取其值)对其进行更新。

如果我正在编写程序,我不会将这两个职责都指定给a,但这就是这里发生的事情。

【讨论】:

    【解决方案2】:

    我稍微修改了逻辑,但您可以将相同的方法应用于您的案例。

    For a, b, and c.
    
    If a > b
       a = b; // now a < b
    otherwise leave a alone.
    
    1. 此时,a 总是小于 b
    if a > c
       a = c // now a < c
    otherwise, leave a alone.
    
    1. 此时,a 始终小于 c。

    因为 1. 和 2.a 小于 bc

    【讨论】:

      猜你喜欢
      • 2021-02-17
      • 1970-01-01
      • 2020-07-16
      • 1970-01-01
      • 1970-01-01
      • 2012-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多