无法在for(int i)循环中找到i上的符号

时间:2015-11-24 18:41:52

标签: java for-loop compiler-errors cannot-find-symbol

我试图获取一个cookie列表,并通过连接一个新的String来改变它们的值。这是我的代码:

    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]);

我在cn = cookies[ i ].getName();收到错误错误为cannot find symbol,表示i。这是为什么?有人可以帮忙吗?

3 个答案:

答案 0 :(得分:2)

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

例如,在此示例中,仅在someValue == 123.时才会调用第一个打印方法但是,第二个打印方法将始终被调用,因为它不在{{1}内声明:

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"); } 是不必要的,因为for循环(if(cookies.length != 0))中的条件总是会覆盖这个,因为我开始等于0。

试试这个:

i < cookies.length

答案 1 :(得分:0)

 class Dest
 {
     public:
        void test() {
            std::cout << "Test Called\n";
        }
 };
 class Forward
 {
     Dest d;
     public: 
         Dest* operator->() {
             return &d;
         }
 };
 int main()
 {
     Forward  f;
     f->test();    // operator-> on the object `f` returns a pointer to
                   // an object of type `Dest*`. Now apply re-apply the
                   // operator-> to the result.
                   //
                   // Since it is already a pointer this means access the
                   // member (which in this case is a method call).
 }

这可能会有所帮助。

答案 2 :(得分:-2)

使用数组索引无法访问嘿cookie只能这样访问使用的方法吗?这里输入代码

 Cookie[] cookies = request.getCookies();

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