我正在解决一道竞赛问题,在这个问题中,我使用scanner接收用户输入。
这里有两段代码,一个关闭了scanner,一个没有关闭。
未关闭扫描器。
第一种方法(关闭扫描器)得分为
第二种方法(不关闭扫描器)得分为
我认为编译器在使用
这是得分判定公式。
这里有两段代码,一个关闭了scanner,一个没有关闭。
关闭scanner
import java.util.Scanner;
public class JImSelection {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = Integer.valueOf(scanner.nextLine());
while (n-- > 0) {
double number = (Math.log(Long.valueOf(scanner.nextLine())) / Math.log(2));
System.out.println((int) number - number == 0 ? "Yes" : "No");
}
scanner.close();
}
}
未关闭扫描器。
import java.util.Scanner;
public class JImSelection {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = Integer.valueOf(scanner.nextLine());
while (n-- > 0) {
double number = (Math.log(Long.valueOf(scanner.nextLine())) / Math.log(2));
System.out.println((int) number - number == 0 ? "Yes" : "No");
}
}
}
第一种方法(关闭扫描器)得分为
14.47
,第二种方法(不关闭扫描器)得分为
15.22
。我认为编译器在使用
scanner.close();
释放资源,这就是得分差异的原因。这是得分判定公式。
它被赋予100分。假设您提交了一个n个字符的解决方案,则您的得分为(56 / n)* 100。