我试图获取一个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
。这是为什么?有人可以帮忙吗?
答案 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();
}
}