简体   繁体   English

如果输出为 0,如何打印数组?

[英]How to print array if the output is 0?

I solve this question and it's working good but a small problem that if the ray contain only one number or same number it return 0 but i want that number.我解决了这个问题,它运行良好,但有一个小问题,如果光线只包含一个数字或相同的数字,它会返回 0,但我想要那个数字。 My code:我的代码:

public class RaySmallest
{
    public static int go(int[] ray)
    {
          int smallest = 0;
      for(int i =0;i<ray.length;i++) 
      {
            if(smallest > ray[i]) 
            {
                smallest = ray[i];
            }
      } 
      return smallest;
 }
}

The Runner for code代码的跑步者

class Main
{
  public static void main(String[] args)
  {
    RaySmallest rt = new RaySmallest();

    System.out.println( rt.go( new int[]{-99,1,2,3,4,5,6,7,8,9,10,12345} ) );
    System.out.println( rt.go( new int[]{10,9,8,7,6,5,4,3,2,1,-99} ) );
    System.out.println( rt.go( new int[]{10,20,30,40,50,-11818,40,30,20,10} ) );
    System.out.println( rt.go( new int[]{32767} ) );
    System.out.println( rt.go( new int[]{255,255} ) );
    System.out.println( rt.go( new int[]{9,10,-88,100,-555,1000} ) );
    System.out.println( rt.go( new int[]{10,10,10,11,456} ) );
    System.out.println( rt.go( new int[]{-111,1,2,3,9,11,20,30} ) );
    System.out.println( rt.go( new int[]{9,8,7,6,5,4,3,2,0,-2,-989} ) );
    System.out.println( rt.go( new int[]{12,15,18,21,23,1000} ) );
    System.out.println( rt.go( new int[]{250,19,17,15,13,11,10,9,6,3,2,1,-455} ) );
    System.out.println( rt.go( new int[]{9,10,-8,10000,-5000,1000} ) );

  }
}

Like in line four my code give me 0 but i need there output as 32767.就像在第四行,我的代码给了我 0,但我需要输出为 32767。

I need this answers.我需要这个答案。

-99
-99
-11818
32767
255
-555
10
-111
-989
12
-455
-5000

Thank you谢谢

If the smallest number is greater than zero the number isn't actually set and this is why you aren't getting the smallest number if you have only one, which is probably below zero.如果最小数字大于零,则该数字实际上并未设置,这就是为什么如果您只有一个(可能低于零)则不会获得最小数字的原因。

public static int go(int[] ray) {
    int smallest = ray.length > 0 ? ray[0] : -1;
    for (int value : ray) {
        if (smallest > value) {
            smallest = value;
        }
    }
    return smallest;
}

Ok, here is part of your code:好的,这是您的代码的一部分:

 int smallest = 0;
  for(int i =0;i<ray.length;i++) 
  {
        if(smallest > ray[i]) 
        {
            smallest = ray[i];
        }
  } 
  return smallest;

Essentially this tells me, smallest is 0. You compare if 0 > ray[i], which on line 4 is 32767. 0 is not greater than 32767, so smallest is still equal to 0 and returned as 0.基本上这告诉我,最小的是 0。你比较如果 0 > ray[i],第 4 行是 32767。0 不大于 32767,所以最小仍然等于 0 并返回为 0。

int smallest = 0;
int[] numArray = new int[ray.length];
 for(int i=0;i<ray.length;i++)
 { 
       if(ray.length == 1)
             return ray[i];
       if(smallest > ray[i])
             smallest = ray[i];
       if(ray[i] == ray[ray.length - 1] && i-ray.length > 0 && i==ray.length-2){
             int x = 0;
             for(int x=0;x<ray.length-1;x++){
                  if(ray[i] != ray[x])
                    break;
             }
             if(ray[i] == ray[x])
                  return ray[i];
       }

}
return smallest;

This solution should take care of having a single value in the array, or if all values in the array are equal.此解决方案应注意数组中有单个值,或者数组中的所有值是否相等。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM