Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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 Continue运算符不使用';不要继续for循环_Java_Loops - Fatal编程技术网

Java Continue运算符不使用';不要继续for循环

Java Continue运算符不使用';不要继续for循环,java,loops,Java,Loops,尝试继续迭代if(str1Number==str2Number),但循环在递增i变量后停止 String getOldestVersion(String str1、String str2){ 字符串[]str1Arr=str1.split(“\\”); 字符串[]str2Arr=str2.split(“\\”); 字符串结果=”; int str1Number=0; int str2Number=0; 对于(int i=0;istr2编号){ 结果=str1; 打破 }else if(str1N

尝试继续迭代
if(str1Number==str2Number)
,但循环在递增i变量后停止

String getOldestVersion(String str1、String str2){
字符串[]str1Arr=str1.split(“\\”);
字符串[]str2Arr=str2.split(“\\”);
字符串结果=”;
int str1Number=0;
int str2Number=0;
对于(int i=0;istr2编号){
结果=str1;
打破
}else if(str1Number==str2Number){
i++;
持续
}否则{
结果=str2;
打破
}
}
返回(结果);
} 

因为,
continue
操作本身告诉您增加迭代
变量-i
,所以您不需要在那里增加迭代次数。你可以简单地写:

else if (str1Number == str2Number){
      continue;
}

continue
关键字只是将控制发送到循环的顶部(在执行
for
构造的增量部分之后)。但条件仍在计算中,因此只有在满足循环条件时,它才会继续循环


在您的情况下,
i
可能是错误的。

如注释中所述,“使用continue作为循环中的最后一个语句没有任何意义。”为什么

因为
continue
语句用于在当前迭代中绕过以下语句的执行,但在您的情况下,它被用作最后一条语句

似乎您希望的是,如果此条件为真-->
if(str1Number==str2Number)
则您不希望执行循环中的任何逻辑,在这种情况下,您可以执行以下操作:

for (int i = 0; i < str1Arr.length-1; i++){ // did you mean i < str1Arr.length ? 
       str1Number = Integer.valueOf(str1Arr[i]);
       str2Number = Integer.valueOf(str2Arr[i]);
       if (str1Number == str2Number) // <---- I've moved it to here 
            continue;
       if (str1Number > str2Number) {
             result = str1;
             break;
       } else {
             result = str2;
             break;
       }
}
for(inti=0;i如果(str1Number==str2Number)//根据方法的名称及其返回值判断,则只需找到其中具有最低整数作为其版本标识符的输入字符串

对于这一点,下面就足够了。根本不需要循环

public class Foo {
  public static void main(String[] args) {
    System.out.println(getOldestVersion("abc.12", "abc.14"));
  }
  public static String getOldestVersion(String v1, String v2) {
    return parseInteger(v1) > parseInteger(v2) ? v2 : v1;
  }

  public static int parseInteger(String input) {
    return Integer.valueOf(input.replaceAll("\\D", ""));
  }
}
如果输入字符串类似于
12.13.14.15
,则可以使用

public class Foo {
  public static void main(String[] args) {
    System.out.println(getOldestVersion("12.18", "14.15"));
  }
  public static String getOldestVersion(String v1, String v2) {
    return Stream.of(v1.split("\\.")).mapToInt(Integer::parseInt).min().orElse(Integer.MAX_VALUE) > Stream.of(v2.split("\\.")).mapToInt(Integer::parseInt).min().orElse(Integer.MAX_VALUE)
        ? v2 : v1;
  }

  public static int parseInteger(String input) {
    return Integer.valueOf(input.replaceAll("\\D", ""));
  }
}

请包括示例输入、所需输出和实际输出您是否确定
str1Number
str2Number
具有相同的值`?我希望您知道该
else
块中的两次增量
I++
。将
continue
用作循环中的最后一个语句没有任何意义。使用continue as循环中的最后一个语句没有任何意义。是的,上面的代码中有很多缺陷。但是,用户的问题与继续操作的工作机制有关。谢谢!!
public class Foo {
  public static void main(String[] args) {
    System.out.println(getOldestVersion("12.18", "14.15"));
  }
  public static String getOldestVersion(String v1, String v2) {
    return Stream.of(v1.split("\\.")).mapToInt(Integer::parseInt).min().orElse(Integer.MAX_VALUE) > Stream.of(v2.split("\\.")).mapToInt(Integer::parseInt).min().orElse(Integer.MAX_VALUE)
        ? v2 : v1;
  }

  public static int parseInteger(String input) {
    return Integer.valueOf(input.replaceAll("\\D", ""));
  }
}