Java 当(n-!=0){}在这段代码中做什么?

Java 当(n-!=0){}在这段代码中做什么?,java,Java,在下面的代码中,这一行翻译成什么 而(n-!=0){}?如果从子字符串的长度中扣除searchMe的长度时,我没有误认为n是18,那么这行是否表示,当18递减(17)不等于0时,进行搜索 class ContinueWithLabelDemo { public static void main(String[] args) { String searchMe = "Look for a substring in me"; String substrin

在下面的代码中,这一行翻译成什么

而(n-!=0){}
?如果从子字符串的长度中扣除
searchMe
的长度时,我没有误认为n是18,那么这行是否表示,当18递减(17)不等于0时,进行搜索

class ContinueWithLabelDemo {
    public static void main(String[] args) {

        String searchMe = "Look for a substring in me";

        String substring = "sub";
        boolean foundIt = false;

        int max = searchMe.length() - 
                  substring.length();


    test:
        for (int i = 0; i <= max; i++) {

            int n = substring.length();

            int j = i;

            int k = 0;
            while (n-- != 0) {
                if (searchMe.charAt(j++) != substring.charAt(k++)) {
                    continue test;
                }
            }
            foundIt = true;
                break test;
        }
        System.out.println(foundIt ? "Found it" : "Didn't find it");
    }
}
class ContinueWithLabelDemo{
公共静态void main(字符串[]args){
String searchMe=“查找我的子字符串”;
字符串substring=“sub”;
布尔foundIt=false;
int max=searchMe.length()
substring.length();
测试:

对于(inti=0;i,在您编写的代码中:

 while (n-- != 0) {
       if (searchMe.charAt(j++) != substring.charAt(k++)) {
                    continue test;
        }
}
因此,如果您将代码替换为以下代码:

    while (n != 0) {
           n = n-1;
           if (searchMe.charAt(j++) != substring.charAt(k++)) {
                            continue test;
           }
    }

这两个代码的工作原理完全相同,因此我认为通过比较,您可以理解其含义。

在您编写的代码中:

 while (n-- != 0) {
       if (searchMe.charAt(j++) != substring.charAt(k++)) {
                    continue test;
        }
}
因此,如果您将代码替换为以下代码:

    while (n != 0) {
           n = n-1;
           if (searchMe.charAt(j++) != substring.charAt(k++)) {
                            continue test;
           }
    }
这两个代码的工作原理完全相同,因此我认为通过比较,您可以理解它的含义。

n——实际上是一种在幕后将n的值更改为n-1的方法,但当前返回n的实际值,因为在这种情况下,它是一个后缀操作

如果它是一个前缀运算(-n),那么返回的值将是17,正如您所说的

基本上,n——意味着取n的当前值,并将其用于此行,但在此行之后,将值减1。在这种情况下,n的第一个值将是字符串的长度

n——实际上是一种在幕后将n的值更改为n-1的方法,但返回n的实际值,因为它是本例中的后缀操作

如果它是一个前缀运算(-n),那么返回的值将是17,正如您所说的

基本上,n--表示取n的当前值并将其用于此行,但在此行之后,将值减1。在这种情况下,n的第一个值将是字符串的长度条件
n-!=0
表示“在递减之前,检查
n
是否不等于零;检查之后,将
n
设置为
n-1
。”

这意味着当
n
等于循环前的某个数字
K
时,循环将精确地重复
K
次。

条件
n-!=0
意味着“在递减之前检查
n
不等于零;在检查后将
n
设置为
n-1
。”

while (n-- != 0) { // checks  (n != 0) then n = n-1;
     if (searchMe.charAt(j++) != substring.charAt(k++)) {
            continue test;
     }
}
这意味着当
n
等于循环前的某个数字
K
时,循环将精确地重复
K

while (n-- != 0) { // checks  (n != 0) then n = n-1;
     if (searchMe.charAt(j++) != substring.charAt(k++)) {
            continue test;
     }
}
n--
将执行后减量,首先检查条件,然后将n的值减少1

假设n的值为10。然后它将首先检查条件,
如果(10!=0)
在此之后,它将减少到9

n--
将执行后减量,首先检查条件,然后将n的值减少1

假设n的值为10。然后它将首先检查条件,

if(10!=0)
之后它将减少到9。

基本上是的。这基本上是一个循环,当n不等于零时,
n-!=0
的条件成立。只需注意,
n-
是一个后减量运算符,它将返回n的当前值,然后在比较
!=0
后减量n。基本上是的。这基本上是一个循环,当n不等于0时,
n-->=0
条件保持为真。请注意,
n-->
是一个后减量运算符,它将返回n的当前值,然后在比较
!=0
后减量n。