Java For循环终止参数

时间:2015-05-06 22:26:08

标签: java for-loop parameters

所以我知道你可以在for循环的每个参数中有多个语句,例如:

user  nginx;
worker_processes  1;

pid /run/nginx.pid;

events {
        worker_connections 1024;
        # multi_accept on;
}

http {
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        server_tokens off;

        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        gzip on;
        gzip_disable "msie6";

        # gzip_vary on;
        # gzip_proxied any;
        # gzip_comp_level 6;
        # gzip_buffers 16 8k;
        # gzip_http_version 1.1;
        # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

        include /etc/nginx/sites-enabled/*;
}

但是第二个参数被视为"和"声明或"或"声明?它会在" j"大于14或将继续直到" i"也变得大于10?

4 个答案:

答案 0 :(得分:2)

那不会编译。您不能为第二个参数设置逗号分隔列表。这将编译:

for(int i=0, j=0; i<10 && j<14; i++, j=j+2){}

答案 1 :(得分:1)

终止参数必须是单个逻辑运算符,i<10 && j<14是可接受的,i<10 , j<14不会。

答案 2 :(得分:0)

这样可以解决问题。运行程序
i和j是2个变量,可以根据你想要的方式使用它们。 如果不更改j的值,则可以将其用作终止符。

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

            for (int i = 0, j = 1, k = 2; i < 5; i++) {
                System.out.println("I : " + i + ",j : " + j + ", k : " + k);
            }
            /*
             * Please note that the variables which are declared, should be of same
             * type as in this example int.
             */

            // THIS WILL NOT COMPILE
            // for(int i=0, float j; i < 5; i++);

        }

答案 3 :(得分:0)

来自JLS 14.14.1 The basic for Statement

  

BasicForStatement:

for ( [ForInit] ; [Expression] ; [ForUpdate] ) Statement 

第一部分,[ForInit]必须是一个变量的声明或一组相同类型的变量:

  

如果ForInit代码是语句表达式列表(第14.8节),则表达式从左到右依次计算;它们的价值(如果有的话)被丢弃。

第二部分,[表达式]必须是boolean

  

Expression 必须包含booleanBoolean类型,否则会出现编译时错误

因此,您当前的for循环声明无法满足这些条件。让我们看看为什么:

for(
    int i=0, int j=0; //you cannot declare a list of variables like this
                      //you can test this by moving this piece of code
                      //out of the for loop
    i<10 , j<14; //this expression doesn't return a boolean nor a Boolean
    i++, j=j+2 //this one is right
    ) {
    //...
}

因此,声明此for循环的正确方法是:

for(
    int i=0, j=0;
    i<10 && j<14;
    i++, j=j+2
    ) {
    //...
}

其中,单个LoC将是:

for(int i=0, j=0; i<10 && j<14; i++, j=j+2) {
    //...
}