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", ""));
}
}