【问题标题】:Getting the lowest and highest value from integers without using arrays?在不使用数组的情况下从整数中获取最小值和最大值?
【发布时间】:2013-10-17 19:13:14
【问题描述】:

我正在尝试编写一个类,它从用户那里读取 5 个整数并返回最高和最低值。这必须使用循环而不使用数组和 Integer.MIN.Value/Integer.MAX.Value 来完成。我已经成功编写了从用户那里获取 5 个整数并返回最高值的代码,但我无法同时获得同一类中返回的最高值和最低值。

这是我上面提到的代码:

import java.util.Scanner;

    public class Ovning_321 {
        public static void main(String[] args){
            Scanner input = new Scanner(System.in);
            int number;
            int max = 0;

            for (int x = 0; x<5; x++){ 
                 System.out.print("Give me an integer: "); 
                 number = input.nextInt(); 

                 if (number > max){ 
                      max = number;  
                 }              
             }                  
             System.out.println("Highest value: " + max);
     }
}

【问题讨论】:

  • 你是说你能用还是不能用MIN_VALUE?如果您已经有跟踪所见最高值的逻辑,您如何修改它以添加一些跟踪所见最低值的内容?
  • +1 自己尝试体面的尝试并自己获得几乎正确的最大值
  • 如果所有输入都是负整数怎么办?那么这将错误地给出 0 作为最大值
  • @underbar 这就是用户在这里寻求帮助的原因
  • @ no_answer_not_upvoted 但是 max 是对的吗?我的意思是,应用程序做我想做的事。 @underbar 应该提到用户不允许负输入。这应该在 System.out.print 中提示。

标签: java loops integer


【解决方案1】:

给你:)

import java.util.Scanner;

    public class Ovning_321 {
        public static void main(String[] args){
            Scanner input = new Scanner(System.in);
            int number;
            int max = 0;
            int min = 0;

                  for (int x = 0; x<5; x++){ 
                        System.out.print("Give me an integer: "); 
                        number = input.nextInt(); 

                        if (x == 0 || number > max){ 
                            max = number;  
                        }               
                        if (x == 0 || number < min){ 
                            min = number;  
                        }               
                  }                 
                  System.out.println("Highest value: " + max);
                  System.out.println("Lowest value: " + min);
            }
     }

【讨论】:

  • 如果用户输入-4 -5 -3 -2 0 -4 -7,最大值将是-4
  • @underbar 我不知道怎么做。迭代 1 最大值将是 -4;迭代 2 max 不会改变;迭代 3 max 将是 -3 因为 x 不是 0 并且 -3 > max
  • 我不认为它会,因为如果输入数字大于它,if语句会更改最大值。
  • @dcaswell 谢谢。 downvote/point loss 本身并不困扰我。尽管它是可编译+可运行的代码,但试图解释却没有让人们明白这一点令人沮丧。
  • 我现在完全明白了!谢谢好心的先生:)
【解决方案2】:

为什么不重复你的最大值逻辑?

public class Ovning_321 {
    public static void main(String[] args){

        Scanner input = new Scanner(System.in);
        System.out.print("Give me an integer: "); 

        number = input.nextInt();
        int max = number;
        int min = number;

              for (int x = 0; x<4; x++){ 
                    System.out.print("Give me an integer: "); 
                    number = input.nextInt(); 

                    if (number > max){ 
                        max = number;  
                    }

                    if (number < min){ 
                        min = number;  
                    } 
              }                 
              System.out.println("Highest value: " + max);
              System.out.println("Lowest value: " + min);
        }
 }

请注意,max 和 min 最初设置为用户输入的第一个数字,因此不会有假 0,也不需要 MAX_INTMIN_INT。这反过来会减少循环运行一次,因此在 i == 4 而不是 5 处终止。

【讨论】:

  • -1 误解了我的回答,尽管多次尝试解释它
  • 难道不是应该帮助消除误解而不是惩罚那些经历过误解的人吗?
  • 有时,当有人不仅误解了,还投了反对票,直到第三次尝试才理解,这是最好的发泄方式。
  • SO 不是用来发泄的。我犯了一个错误,意识到它并纠正它。不需要感情。无需点名。下次遇到“白痴”时,请记住这一点。
  • 还有-1的工作答案?现在这越来越荒谬了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-25
  • 2019-09-19
  • 1970-01-01
  • 2013-12-04
相关资源
最近更新 更多