什么是代码段以及如何在 VSCode 中为竞争性编程创建Java代码段?
片段是指一小段可重用的源代码、机器代码或文本,借助片段,我们可以在程序中一次又一次地使用长行代码。 Snippets 是一个很好的工具,可以更快地编写程序。打字速度对于竞争性编程非常重要。通常, Java中有两个类用于执行输入/输出操作。
- 扫描仪类
- BufferedReader 类
扫描仪类 是Java.util 包中的一个类,用于获取原始类型(如 int、double 等)和字符串的输入。这是在Java程序中读取输入的最简单方法,但如果您想要一种输入法用于时间受限的场景(如竞争性编程),则效率不高。 Scanner 类使用内置的解析操作,这使得竞争性编程速度变慢。
BufferedReader 类:从字符输入流中读取文本,缓冲字符以提供对字符、数组和行的有效读取。此类在执行输入/输出操作时比 Scanner 类快得多,但需要大量输入)
BufferedReader is very much efficient and faster than Scanner class but the syntax for initialization of this class and performing operations is very more as compared to Scanner Class Operations.
片段的组件:每个片段包含四个组件
- 片段名称:从不同片段中区分出唯一的片段名称
- prefix : 在程序中生成当前片段的关键字
- body :我们绑定到片段的实际代码包含在正文中。
- 描述:关于片段的信息包含在片段中。
片段格式:在使用 JSON 格式的Java.json 文件中实现的特定代码片段。
Javascript
"Name_of_the_snippet ":
{
"prefix": "prefix_of_the_snippet",
"body": [
// Actual code of the snippet
],
"description": "description_about_the_snippet"
}
Java
// Java Program to create Java snippets
// in VSCode for Competitive Programming
/* Code for user defined class */
// Importing generic java libraries
import java.util.*;
import java.util.Map.Entry;
import java.io.*;
import java.util.regex.Pattern;
public class GFG {
static class FastReader {
BufferedReader br;
StringTokenizer st;
public FastReader()
{
br = new BufferedReader(
new InputStreamReader(System.in));
}
String next()
{
while (st == null || !st.hasMoreElements()) {
try {
st = new StringTokenizer(br.readLine());
}
catch (IOException e) {
e.printStackTrace();
}
}
return st.nextToken();
}
int nextInt() { return Integer.parseInt(next()); }
long nextLong() { return Long.parseLong(next()); }
double nextDouble()
{
return Double.parseDouble(next());
}
String nextLine()
{
String str = "";
try {
str = br.readLine();
}
catch (IOException e) {
e.printStackTrace();
}
return str;
}
}
public static void main(String[] args)
{
FastReader scan=new FastReader();
}
}
Javascript
{
"User-Defined_SnippetGFG": { //Name of the snippet
"prefix": "FastClass", //keyword to generate
"body": [ //code implemented in the snippet
" static class FastReader {",
" BufferedReader br;",
" StringTokenizer st;",
" public FastReader()",
"{",
" br = new BufferedReader(new InputStreamReader(System.in));",
"}",
"String next(){",
"while (st == null || !st.hasMoreElements()) {",
"try {",
" st = new StringTokenizer(br.readLine());",
"}",
" catch (IOException e) {",
" e.printStackTrace();",
"}",
"}",
"return st.nextToken();",
"}",
"int nextInt() { return Integer.parseInt(next()); }",
"long nextLong() { return Long.parseLong(next()); }",
"double nextDouble() {",
"return Double.parseDouble(next())",
" }",
"String nextLine(){",
"String str = \"\";",
"try {",
"str = br.readLine();",
"}",
"catch (IOException e) {",
"e.printStackTrace();",
"}",
"return str;",
"}",
"}",
"",
" "
],
"description": ""
}
}
程序:涉及步骤如下:
- 在新的Java文件中创建和实现用户定义的类。
- 现在,创建此类的片段
实现:对于用户定义的类。将BufferedReader的所有Input/Output方法都实现为用户自定义,通过在我们的类中将它们作为类成员实现(使用BufferedReader和StringTokenizer):这个方法利用了BufferedReader和StringTokenizer的时间优势和用户自定义的优势减少打字的方法,因此输入速度更快。这在 1.23 s 的时间内被接受,并且非常推荐这种方法,因为它易于记忆并且足够快,可以满足竞争性编码中大多数问题的需求。
Java
// Java Program to create Java snippets
// in VSCode for Competitive Programming
/* Code for user defined class */
// Importing generic java libraries
import java.util.*;
import java.util.Map.Entry;
import java.io.*;
import java.util.regex.Pattern;
public class GFG {
static class FastReader {
BufferedReader br;
StringTokenizer st;
public FastReader()
{
br = new BufferedReader(
new InputStreamReader(System.in));
}
String next()
{
while (st == null || !st.hasMoreElements()) {
try {
st = new StringTokenizer(br.readLine());
}
catch (IOException e) {
e.printStackTrace();
}
}
return st.nextToken();
}
int nextInt() { return Integer.parseInt(next()); }
long nextLong() { return Long.parseLong(next()); }
double nextDouble()
{
return Double.parseDouble(next());
}
String nextLine()
{
String str = "";
try {
str = br.readLine();
}
catch (IOException e) {
e.printStackTrace();
}
return str;
}
}
public static void main(String[] args)
{
FastReader scan=new FastReader();
}
}
输出:
第 2 步:在 VSCode 中创建用户定义类的片段
VSCode 是一个文本编辑器,为开发操作和版本控制系统提供支持。它为用户提供了构建无忧代码的工具。它可以从visualstudio.com 下载和安装。现在跳到程序的第 2 步。
- 在要创建的文件夹中打开VS。
- 在用户代码段之后搜索Java.js 的设置。
- 搜索 SnippetGenerator。
- 将代码片段粘贴到Java.json 文件中并检查它。
为了更好地理解,下面通过视觉表示详细显示了步骤:
2.1:在我们要创建代码片段的文件夹中打开VScode 。
2.2:点击设置按钮,在用户代码片段后,在文本框中搜索Java.js。该文件如下所示。
2.3:现在搜索片段生成器这个工具将Java代码转换成片段。从此工具复制 JSON 片段。
2.4:将代码片段粘贴到程序目录下的Java.json 文件中。
Javascript
{
"User-Defined_SnippetGFG": { //Name of the snippet
"prefix": "FastClass", //keyword to generate
"body": [ //code implemented in the snippet
" static class FastReader {",
" BufferedReader br;",
" StringTokenizer st;",
" public FastReader()",
"{",
" br = new BufferedReader(new InputStreamReader(System.in));",
"}",
"String next(){",
"while (st == null || !st.hasMoreElements()) {",
"try {",
" st = new StringTokenizer(br.readLine());",
"}",
" catch (IOException e) {",
" e.printStackTrace();",
"}",
"}",
"return st.nextToken();",
"}",
"int nextInt() { return Integer.parseInt(next()); }",
"long nextLong() { return Long.parseLong(next()); }",
"double nextDouble() {",
"return Double.parseDouble(next())",
" }",
"String nextLine(){",
"String str = \"\";",
"try {",
"str = br.readLine();",
"}",
"catch (IOException e) {",
"e.printStackTrace();",
"}",
"return str;",
"}",
"}",
"",
" "
],
"description": ""
}
}
输出: Java.json 文件
2.5:检查代码段: FastClass 是启动代码段的关键字。
2.6. GFG1。 Java文件