我解决了这个问题,效果很好,但是有一个小问题,如果射线仅包含一个数字或相同数字,它将返回0,但我想要该数字。我的代码:
#!/bin/bash
source '----/catkin_ws/devel/setup.bash'
if [ $1 == 1 ]
then
echo "$2"
topiclist=$(rostopic echo /topic name)
echo "$topiclist"
fi
代码赛跑者
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;
}
}
就像第四行一样,我的代码给了我0,但我需要在那里输出为32767。
我需要这个答案。
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} ) );
}
}
谢谢
答案 0 :(得分:1)
如果最小数字大于零,则实际上没有设置该数字,这就是为什么只有一个数字(可能小于零)时却没有最小数字的原因。
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;
}
答案 1 :(得分:0)
好的,这是您代码的一部分:
int smallest = 0;
for(int i =0;i<ray.length;i++)
{
if(smallest > ray[i])
{
smallest = ray[i];
}
}
return smallest;
基本上,这告诉我,最小为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;
此解决方案应注意在数组中具有单个值,或者如果数组中的所有值都相等。