📌  相关文章
📜  什么是代码段以及如何在 VSCode 中为竞争性编程创建Java代码段?

📅  最后修改于: 2022-05-13 01:54:44.293000             🧑  作者: Mango

什么是代码段以及如何在 VSCode 中为竞争性编程创建Java代码段?

片段是指一小段可重用的源代码、机器代码或文本,借助片段,我们可以在程序中一次又一次地使用长行代码。 Snippets 是一个很好的工具,可以更快地编写程序。打字速度对于竞争性编程非常重要。通常, Java中有两个类用于执行输入/输出操作。

  • 扫描仪类
  • BufferedReader 类

扫描仪类 是Java.util 包中的一个类,用于获取原始类型(如 int、double 等)和字符串的输入。这是在Java程序中读取输入的最简单方法,但如果您想要一种输入法用于时间受限的场景(如竞争性编程),则效率不高。 Scanner 类使用内置的解析操作,这使得竞争性编程速度变慢。

BufferedReader 类从字符输入流中读取文本,缓冲字符以提供对字符、数组和行的有效读取。此类在执行输入/输出操作时比 Scanner 类快得多,但需要大量输入)

片段的组件:每个片段包含四个组件

  1. 片段名称:从不同片段中区分出唯一的片段名称
  2. prefix : 在程序中生成当前片段的关键字
  3. body :我们绑定到片段的实际代码包含在正文中。
  4. 描述:关于片段的信息包含在片段中。

片段格式:在使用 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": ""
  }
 
}



程序:涉及步骤如下:

  1. 在新的Java文件中创建和实现用户定义的类。
  2. 现在,创建此类的片段

实现:对于用户定义的类。将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文件