我在Java中的TimerTask遇到了一些问题。基本上,我试图做的是为每个会话计算一些东西,我设置一分钟的时间范围,一旦时间到了,我会提示用户输入是否启动另一个会话。以下是我尝试过的:
String toCont = "";
Scanner scanner = new Scanner(System.in);
do {
long delay = TimeUnit.MINUTES.toMillis(1);
Timer t = new Timer();
int marks = startSession(); // function to compute some marks
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("Time's up!");
System.out.print("Do you wished to start a new game? (Y/N): ");
toCont = scanner.next();
}
};
t.schedule(task, delay);
} while (toCont.equals("y") || toCont.equals("Y"));
但是,run()中的toCont变量出现了一些语法错误。错误消息如下:“封闭范围中定义的局部变量toCont必须是final或有效final”。有什么办法可以解决这个问题吗?谢谢
要在内部类中使用变量,必须将其声明为final。将它添加到do while循环中(解决方法)
do {
long delay = TimeUnit.MINUTES.toMillis(1);
final Integer innertoCont = new Integer(toCont);
Timer t = new Timer();
int marks = startSession(); // function to compute some marks
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("Time's up!");
System.out.print("Do you wished to start a new game? (Y/N): ");
innertoCont = scanner.next();
}
};
t.schedule(task, delay);
} while (toCont.equals("y") || toCont.equals("Y"));
使变量成为最终的单元素数组。
final String[] toCont = {
""
};
Scanner scanner = new Scanner(System.in);
do {
long delay = TimeUnit.MINUTES.toMillis(1);
Timer t = new Timer();
int marks = startSession(); // function to compute some marks
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("Time's up!");
System.out.print("Do you wished to start a new game? (Y/N): ");
toCont[0] = scanner.next();
}
};
t.schedule(task, delay);
} while (toCont[0].equals("y") || toCont[0].equals("Y"));
主要内容:Python局部变量,Python全局变量,获取指定作用域范围中的变量所谓 作用域(Scope),就是变量的有效范围,就是变量可以在哪个范围以内使用。有些变量可以在整段代码的任意位置使用,有些变量只能在函数内部使用,有些变量只能在 for 循环内部使用。 变量的作用域由变量的定义位置决定,在不同位置定义的变量,它的作用域是不一样的。本节我们只讲解两种变量, 局部变量和 全局变量。 Python局部变量 在函数内部定义的变量,它的作用域也仅限于函数内部,出了函数就不能
4. 全局变量、局部变量和作用域 我们把函数中定义的变量称为局部变量(Local Variable),由于形参相当于函数中定义的变量,所以形参也是一种局部变量。在这里“局部”有两层含义: 1、一个函数中定义的变量不能被另一个函数使用。例如print_time中的hour和minute在main函数中没有定义,不能使用,同样main函数中的局部变量也不能被print_time函数使用。如果这样定义:
本文向大家介绍Java中如何使用lambda访问封闭类中的变量,包括了Java中如何使用lambda访问封闭类中的变量的使用技巧和注意事项,需要的朋友参考一下 Lambda 表达式的封闭范围定义的变量可以在 lambda 表达式中访问。Lambda 表达式可以访问实例、静态变量和由封闭类定义的方法。它还可以访问“ this”变量(隐式和显式) ,该变量可以是封闭类的实例。Lambda 表达式还设置
我正在尝试创建一个I*J数量的按钮。 提前多谢。
问题内容: 我有一些这样的代码: 而且我收到警告,因为使用in闭包是可变变量,所以可能会引起问题。 我该如何避免呢?我的意思是我如何将不可变变量发送给回调,因为这是一个for循环,并且我无法更改代码?换句话说,如何将参数传递给闭包? 问题答案: 您需要创建一个范围以使用自执行功能正确捕获。这是因为整个for循环是一个作用域,也就是说,每次循环都捕获相同的变量。因此,回调将以错误的id结尾,因为的值
JavaScript 是一种非常面向函数的语言。它给了我们很大的自由度。在 JavaScript 中,我们可以随时创建函数,可以将函数作为参数传递给另一个函数,并在完全不同的代码位置进行调用。 我们已经知道函数可以访问其外部的变量。 但是,如果在函数被创建之后,外部变量发生了变化会怎样?函数会获得新值还是旧值? 如果将函数作为参数传递并在代码中的另一个位置调用它,该函数将访问的是新位置的外部变量吗