Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于测试用例失败的Java实践作业混乱_Java_Algorithm - Fatal编程技术网

关于测试用例失败的Java实践作业混乱

关于测试用例失败的Java实践作业混乱,java,algorithm,Java,Algorithm,我正在一个名为coding bat的网站上解决一个编码问题,但我不知道为什么其中一个测试失败 -问题 给定整数数组,如果数组中某处出现..1、2、3,..,则返回true 公共布尔数组123(int[]nums){ 布尔结果=假; 对于(int i=0;i

我正在一个名为coding bat的网站上解决一个编码问题,但我不知道为什么其中一个测试失败

-问题 给定整数数组,如果数组中某处出现..1、2、3,..,则返回true

公共布尔数组123(int[]nums){
布尔结果=假;
对于(int i=0;i
除此之外,所有测试均通过:
array123({1,1,2,3,1})→ true
但我的代码实际上返回了
false
。为什么?

当您找到序列的一个匹配项时,应该立即返回true

public boolean array123(int[] nums) {
  for(int i=0; i < nums.length-2; i++){
    if (nums[i] == 1 && nums[i+1] == 2 && nums[i+2] == 3)
      return true;
  }
  return false;
}
公共布尔数组123(int[]nums){
对于(int i=0;i
您需要返回结果,或者在获得积极结果时打破循环。您已经使用return获得了其他答案。下面是一个结尾带有return语句的版本:

public boolean array123(int[] nums) {
    boolean result = false;
    for(int i=0; i < nums.length-2; i++){
        if (nums[i] == 1 && nums[i+1] == 2 && nums[i+2] == 3){
            result = true;
            break;
        }
    }
    return result;
}

如果它遇到您的序列,那么它会将
结果设置为
,并且它将永远无法返回到
。虽然您将运行到数字系列的末尾—不是最佳状态。

您不需要else语句,但您已经将结果初始化为false。下面是修复后的代码

public boolean array123(int[] nums) {
  for(int i=0; i < nums.length-2; i++){
    if (nums[i] == 1 && nums[i+1] == 2 && nums[i+2] == 3){
      return true;
    }
  }
  return false;
}
公共布尔数组123(int[]nums){
对于(int i=0;i
布尔结果=false;

对于(inti=0;我为什么?我这样做的方式确实使它变成了真的。否则就永远不会run@TazManelse可能会在后续的for循环迭代中执行。它将使结果的值再次变为false。覆盖结果。最后一个检查是:2、3、1,因此它将被设置为false。是否希望序列1、2、3或1、2和3出现在任意位置手术?。很好的解释,特别是关于优化的处理。谢谢
public boolean array123(int[] nums) {
    boolean result = false;
    for(int i=0; i < nums.length-2; i++){
        if (nums[i] == 1 && nums[i+1] == 2 && nums[i+2] == 3){
            result = true;
        }
    }
    return result;
}
public boolean array123(int[] nums) {
  for(int i=0; i < nums.length-2; i++){
    if (nums[i] == 1 && nums[i+1] == 2 && nums[i+2] == 3){
      return true;
    }
  }
  return false;
}
     boolean result = false;
      for(int i=0; i <= nums.length-2; i++){
         if (nums[i] == 1 && nums[i+1] == 2 && nums[i+2] == 3)
         result = true;
     }