java算法题输入输出模板

目录

一、测试运行

二、代码

总结



前言

  算法题的输入输出模板


一、测试运行

二、代码

package cource;


import java.io.*;
import java.util.StringTokenizer;

/*
    out.println后要flush
    in.next到空格或者换行结束
    in.nextInt()后,不需要in.next()消除换行符
*/

public class IOTemplate {
    static InputReader sc = new InputReader(System.in);
    static PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));


    public static void main(String[] args) {

    }

    public static class InputReader {
        BufferedReader reader;
        StringTokenizer tokenizer;

        public InputReader(InputStream in) {
            reader = new BufferedReader(new InputStreamReader(in));
        }

        public String next() throws IOException {
            while (tokenizer == null || !tokenizer.hasMoreTokens()) {
                tokenizer = new StringTokenizer(reader.readLine());
            }
            return tokenizer.nextToken();
        }

        public int nextInt() throws IOException {
            return Integer.parseInt(next());
        }
    }
}


总结

### Java 算法题输入输出示例与规范 在解决算法竞赛中的问题时,掌握正确的输入输出方式至关重要。以下是关于 Java 中常见的输入输出方法及其适用场景。 #### 基本 A+B 问题 对于简单的加法运算问题(即读取两个整数并打印它们的和),可以采用如下代码结构: ```java import java.util.*; public class Main { public static void main(String[] args) { Scanner cin = new Scanner(System.in); int a, b; while (cin.hasNext()) { a = cin.nextInt(); b = cin.nextInt(); System.out.println(a + b); } } } ``` 上述代码通过 `Scanner` 类实现了连续读取多个整数对的功能,并逐一计算其和[^1]。 --- #### 多行输入处理 当面对多行输入的情况时,可以通过逐行读取的方式完成解析。例如,在每行中可能存在若干个数值需要求和的情况下,可使用以下代码: ```java import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNextLine()) { int sum = 0; String[] arr = sc.nextLine().split(" "); for (String str : arr) { sum += Integer.parseInt(str); } System.out.println(sum); } } } ``` 此代码片段利用了 `nextLine()` 方法来获取每一行的内容,并将其分割成数组以便进一步操作[^2]。 --- #### 字符串排序问题 针对字符串排序类的问题,通常涉及字符分类以及特定位置索引查询的操作。下面是一个典型的例子——将字符串按大小写字母顺序排列后返回指定位置上的原始索引值: ```java import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // 输入字符串和目标K值 String s = scanner.next(); int k = scanner.nextInt(); List<Character> upperCaseChars = new ArrayList<>(); List<Character> lowerCaseChars = new ArrayList<>(); Map<Character, Integer> indexMap = new HashMap<>(); // 将字符分为两类存储,并记录首次出现的位置 for (int i = 0; i < s.length(); ++i) { char c = s.charAt(i); if (!indexMap.containsKey(c)) { indexMap.put(c, i); } if (Character.isUpperCase(c)) { upperCaseChars.add(c); } else if (Character.isLowerCase(c)) { lowerCaseChars.add(c); } } Collections.sort(upperCaseChars); Collections.sort(lowerCaseChars); StringBuilder sortedStrBuilder = new StringBuilder(); sortedStrBuilder.append(String.valueOf(upperCaseChars.toArray(new Character[0]))); sortedStrBuilder.append(String.valueOf(lowerCaseChars.toArray(new Character[0]))); String sortedStr = sortedStrBuilder.toString(); // 查找第k个字符对应的原索引 if (k - 1 >= sortedStr.length() || k <= 0) { System.out.println(-1); // 越界情况 } else { char targetChar = sortedStr.charAt(k - 1); System.out.println(indexMap.get(targetChar)); } } } ``` 该程序首先区分大小写并将相应部分分别存入列表中加以排序;之后依据所给定参数定位到具体所需的结果项上[^3]。 --- #### 总结 以上展示了三种不同类型的Java算法题目的标准输入/输出形式:单组或多组简单算术运算、批量数据处理以及复杂逻辑下的字符串分析任务。这些基础模板能够帮助初学者快速适应各类比赛环境的要求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值