当我在
上手动执行迭代时,我得到了一个不同的值“ welcometojava”
当i = 5时的值
我正在跟踪变量的值
当我= 5时;
substring =MET
smallest="com"
largest="ome"
在这一点上,我得到的值不是同时验证两个if条件。
我需要每次迭代中所有3个变量的值的帮助,以便我可以知道我要去哪里
错了。谢谢
public class Solution {
public static String getSmallestAndLargest(String s, int k) {
String smallest = "";
String largest = "";
smallest = largest = s.substring(0, k);
for (int i=1; i<s.length()-k+1; i++) {
String substr = s.substring(i, i+k);
if (smallest.compareTo(substr) > 0)
smallest = substr;
if (largest.compareTo(substr) < 0)
largest = substr;
}
return smallest + "\n" + largest;
}
答案 0 :(得分:1)
如果您不使用调试器,则可以通过打印它们来跟踪值,例如我已将System.out.println("i=" + i + ", substring=" + substr + ", smallest=" + smallest + ", largest=" + largest);
添加到您的代码中,如下所示,并且还在其下方显示了输出,以帮助您了解代码的行为方式:
public class Solution {
public static void main(String[] args) {
getSmallestAndLargest("welcometojava", 3);
}
public static String getSmallestAndLargest(String s, int k) {
String smallest = "";
String largest = "";
smallest = largest = s.substring(0, k);
for (int i = 1; i < s.length() - k + 1; i++) {
String substr = s.substring(i, i + k);
if (smallest.compareTo(substr) > 0)
smallest = substr;
if (largest.compareTo(substr) < 0)
largest = substr;
System.out.println("i=" + i + ", substring=" + substr + ", smallest=" + smallest + ", largest=" + largest);
}
return smallest + "\n" + largest;
}
}
输出:
i=1, substring=elc, smallest=elc, largest=wel
i=2, substring=lco, smallest=elc, largest=wel
i=3, substring=com, smallest=com, largest=wel
i=4, substring=ome, smallest=com, largest=wel
i=5, substring=met, smallest=com, largest=wel
i=6, substring=eto, smallest=com, largest=wel
i=7, substring=toj, smallest=com, largest=wel
i=8, substring=oja, smallest=com, largest=wel
i=9, substring=jav, smallest=com, largest=wel
i=10, substring=ava, smallest=ava, largest=wel
以类似的方式,您可以添加更多打印语句,例如打印smallest.compareTo(substr) > 0
的值,依此类推,以使您的代码更深入。但是,我强烈建议您使用调试器来这样做。