关闭Scanner会影响性能吗
Does closing Scanner affect performance
我正在解决一个竞争性问题,在这个问题中,我正在使用扫描仪获取用户输入。
这是 2 个代码段,一个关闭扫描器,一个不关闭扫描器。
Closing 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();
}
}
Not closing 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");
}
}
}
第一个(关闭扫描器)给我打分14.47
,
第二个(不关闭扫描仪)给出 15.22
.
我认为当我使用 scanner.close();
时编译器正在释放资源,这就是分数不同的原因。
这是评分判断公式
It is assigned a score of 100. Suppose, you submit a solution of n
characters, then your score is (56/n)*100.
It is assigned a score of 100. Suppose, you submit a solution of n
characters, then your score is (56/n)*100.
你在开玩笑吧?一个解决方案的分数是 14.47。这意味着您的源代码是 56 / (14.47/100) =~= 387
个字符。(=~=
因为缺少 "about equals" 符号)
在另一个实例中,您的得分为 15.22,这意味着您的源代码长度为 56 / (15.22/100) =~= 368
个字符。
相差 29 个字符,这可能是表示 scanner.close();
的源代码行的长度(包括前导空格、两个尾随空格和一个回车符 return/line 提要对)
这与您的代码的性能无关。
我正在解决一个竞争性问题,在这个问题中,我正在使用扫描仪获取用户输入。
这是 2 个代码段,一个关闭扫描器,一个不关闭扫描器。
Closing 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();
}
}
Not closing 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");
}
}
}
第一个(关闭扫描器)给我打分14.47
,
第二个(不关闭扫描仪)给出 15.22
.
我认为当我使用 scanner.close();
时编译器正在释放资源,这就是分数不同的原因。
这是评分判断公式
It is assigned a score of 100. Suppose, you submit a solution of n characters, then your score is (56/n)*100.
It is assigned a score of 100. Suppose, you submit a solution of n characters, then your score is (56/n)*100.
你在开玩笑吧?一个解决方案的分数是 14.47。这意味着您的源代码是 56 / (14.47/100) =~= 387
个字符。(=~=
因为缺少 "about equals" 符号)
在另一个实例中,您的得分为 15.22,这意味着您的源代码长度为 56 / (15.22/100) =~= 368
个字符。
相差 29 个字符,这可能是表示 scanner.close();
的源代码行的长度(包括前导空格、两个尾随空格和一个回车符 return/line 提要对)
这与您的代码的性能无关。