Java 在(int i)循环的i上找不到符号

Java 在(int i)循环的i上找不到符号,java,for-loop,compiler-errors,cannot-find-symbol,Java,For Loop,Compiler Errors,Cannot Find Symbol,我试图获得一个cookie列表,并通过连接一个新字符串来更改它们的值。这是我的密码: String color = request.getParameter("color"); Cookie cookies[] = request.getCookies(); // get client's cookies; String cn; String cv; if ( cookies.length != 0 ) { // get the nam

我试图获得一个cookie列表,并通过连接一个新字符串来更改它们的值。这是我的密码:

    String color = request.getParameter("color");
    Cookie cookies[] = request.getCookies(); // get client's cookies;
    String cn;
    String cv;

    if ( cookies.length != 0 ) { 
        // get the name of each cookie
        for ( int i = 0; i < cookies.length; i++ ) 
            cn = cookies[ i ].getName();
            cv = cookies[ i ].getValue();
            cv = cv.concat(color);
            cookies[i].setValue(cv);
            response.addCookie(cookies[i]);
String color=request.getParameter(“color”);
Cookie cookies[]=request.getCookies();//获取客户的cookies;
字符串cn;
字符串cv;
如果(cookies.length!=0){
//获取每个cookie的名称
for(int i=0;i

我在
cn=cookies[I].getName();
上遇到一个错误,错误是
找不到符号
,并指示
I
。这是为什么?有人能帮忙吗?

嘿,cookies无法使用数组索引访问,这是访问的唯一方法,请在此处输入代码

 Cookie[] cookies = request.getCookies();

String userId = null;
for(Cookie cookie : cookies)
{
    if("uid".equals(cookie.getName()))
{
        userId = cookie.getValue();
    }
}

这可能会有所帮助。

for循环没有大括号。这意味着只有
for
循环定义下方的第一行实际上是循环的一部分。因此,后续行引用的变量
i
不在其作用域内(因为它只存在于
for
循环的作用域内)

例如,在本例中,仅当
someValue==123时才会调用第一个print方法。
但是,第二个print方法将始终被调用,因为它不在
if
语句中:

if(someValue == 123)
    System.out.println("This number equals 123");
    System.out.println("This number is greater than 122");
但是,在本例中,这两个调用都在
if
语句中,因此只有
someValue==123:

if(someValue == 123){
    System.out.println("This number equals 123");
    System.out.println("This number is greater than 122");
}
另外,
如果(cookies.length!=0)
是不必要的,因为for循环中的条件(
i
)将始终覆盖这一点,因为i开始时等于0

试试这个:

for(int i = 0; i < cookies.length; i++){
    cn = cookies[ i ].getName();
    cv = cookies[ i ].getValue();
    cv = cv.concat(color);
    cookies[i].setValue(cv);
    response.addCookie(cookies[i]);
}
for(int i=0;i
我编辑了这篇带有错误的文章。请更多地关注大括号。错误指示的行是错误的。仔细看。@BalusC这几乎肯定是问题所在。for循环没有大括号,所以只有
cn=cookies[i].getName();
实际上是循环的一部分。但是他说错误在循环
i
之后的第一行应该可以访问。嗯……这是全部代码吗?“不能使用数组索引访问cookies”胡说八道。
cookies
绝对是一个数组。同意。没有理由不能通过索引访问
cookies
的条目。你忘记告诉OP为什么会遇到所述问题。现在OP和你自己都没有学到什么。
for(int i = 0; i < cookies.length; i++){
    cn = cookies[ i ].getName();
    cv = cookies[ i ].getValue();
    cv = cv.concat(color);
    cookies[i].setValue(cv);
    response.addCookie(cookies[i]);
}