2013-04-12 38 views
0

我不得不制作一个程序,告诉你5个数字的最大和最小数量,并且在输出中我保持最小= 0和最大= 0。我还没有添加任何评论或类似的东西,而且我尝试了其他方式,如果它不能正常工作(惊讶我还有其他工作)。有人可以帮助我这个。我不应该需要帮助,但我只是不能弄清楚这一点。。否则如果?

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

     int num1=3, num2=9, num3=5, num4 = 3, num5 = 7; 
     int largest = 0, smallest = 0; 

      if(num1 > num2){ 
       num1 = largest; 
       num2 = smallest; 
      }else{ 
       num2 = largest; 
       num1 = smallest; 
      } 

      if(num3>largest){ 
       num3 = largest; 
      } 
      if(num3<smallest) 
       num3 = smallest; 
      if(num4>largest){ 
       num4 = largest; 
      } 
      if(num4<smallest) 
       num4 = smallest; 

      if(num5>largest){ 
        num5 = largest; 
       } 
       if(num5<smallest) 
        num5 = smallest; 



      System.out.println("the smallest number is " + smallest + " and the largest is " + largest); 
    } 
} 

回答

2

你的任务都是以相反的顺序 - 他们应该是smallest = whatever,不whatever = smallest

这也哭了出来放在for循环。

int[] nums = new int[] {num1, num2, num3, num4, num5}; 
int smallest = nums[0]; 
int largest = nums[0]; 
for(int i = 1; i < nums.length; i++) { 
    if(nums[i] < smallest) { 
     smallest = nums[i]; 
    } 
    if(nums[i] > largest) { 
     largest = nums[i]; 
    } 
} 

初始化smallestlargest从您的号码清单有效的int - 它们初始化为0会导致smallest等于0当您完成。 (这不会导致唯一的默认值问题是smallest = Integer.MAX_VALUE; largest = Integer.MIN_VALUE;

+0

我会用一个循环,但由于某种原因,我有很多的麻烦把环插入这样的事情。我有麻烦它会如何工作。感谢帮助我切换了所有最大和最大的数字。感谢 – user2275212

+0

这个循环做的是将num1,num2等放在一个索引的整数列表中,所以在'nums = new int [] {num1,num2,..}',int [0] == num1,int [ 1] == num2,依此类推直到int [4] == num5。索引是基于0的,所以第一个元素在nums [0]处,最后一个在nums [nums.length - 1]处。 'smallest'和'largest'被初始化为num [0],所以你的循环可以从num [1]开始。循环遍历剩下的四个数字,并将它们与“最小”和“最大”进行比较。 –

1
public int min(int a, int b) { 
    if(a > b) return b; 
    return a; 
} 

public int max(int a, int b) { 
    if(a > b) return a; 
    return b; 
} 

int num1=3, num2=9, num3=5, num4 = 3, num5 = 7; 
int largest = num1, smallest = num1; 

smallest = min(min(min(num1, num2) , min(num3, num4)), num5); 
largest = max(max(max(num1, num2) , max(num3, num4)), num5); 
+0

你不打电话给最大和最小不起作用,因为他们每个接受两个参数,你传递三个?还是我读错了?更新了 –

+1

,我错过了一个括号。 – andre

+0

初始化num1中的'largest'和'smallest',否则将'smallest'初始化为'Integer.MAX_VALUE',将'maximum'初始化为'Integer.MIN_VALUE'。目前,代码将导致“最小”等于0,当它应该等于3时 –

1

如果你学习 Java中,使用与阵列和循环解决方案。如果您使用的Java是,它可以在3行来:

List<Integer> list = Arrays.asList(num1, num2, num3, num4, num5); 
int smallest = Collections.min(list); 
int largest = Collections.max(list);