所以我知道你可以在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?
答案 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 必须包含
boolean
或Boolean
类型,否则会出现编译时错误
因此,您当前的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) {
//...
}