ACM(OJ)模式下对于各种输入输出情况的总结(JAVA)

时间:2025-03-09 18:41:42
import java.util.Arrays; import java.util.Scanner; public class InOutTest { public static void main(String[] args){ // 1. 多组空格分割的两个整数 // eg:每行输入两个数求和 // 1 5 // 10 20 // Scanner in = new Scanner(); // while (()){ // while处理多个case // int a = (); // int b = (); // (a + b); // } // 2. 第一行组数接空格分割的两个正整数 (行数限制) // eg: 输出a+b的结果 // 2 // 1 5 // 10 20 // Scanner in = new Scanner(); // int num = (); // for (int i =0; i < num; i++){ // int a = (); // int b = (); // (a + b); // } // 3. 空行分割的两个正整数,0 0 结束 (结束符限制) // eg: 输出a+b的结果 // 1 5 // 10 20 // 0 0 // Scanner in = new Scanner(); // while (()){ // int a = (); // int b = (); // if(a == 0 && b == 0) break; // (a + b); // } // 4. 每行第一个为个数后带空格分割整数,0结束 (结束符限制,每行有个数限制) // 输入数据包括多组。 // 每组数据一行,每行的第一个整数为整数的个数n(1 <= n <= 100), n为0的时候结束输入。 // 接下来n个正整数,即需要求和的每个正整数。 // eg: 每组数据输出求和的结果 // 4 1 2 3 4 // 5 1 2 3 4 5 // 0 // Scanner in = new Scanner(); // while (()){ // int n = (); // if (n == 0) break; // int sum = 0; // for (int i = 0; i < n; i++){ // sum += (); // } // (sum); // } // 5. 第一行组数接第一个个数接空格分开的整数 (行数限制,每行有个数限制) // 输入的第一行包括一个正整数t(1 <= t <= 100), 表示数据组数。 // 接下来t行, 每行一组数据。 // 每行的第一个整数为整数的个数n(1 <= n <= 100)。 // 接下来n个正整数, 即需要求和的每个正整数。 // eg: 每组数据输出求和的结果 // 2 // 4 1 2 3 4 // 5 1 2 3 4 5 // Scanner in = new Scanner(); // int num = (); // for (int i = 0; i < num; i++){ // int n = (); // int sum = 0; // for(int j = 0; j < n; j++){ // sum += (); // } // (sum); // } // 6. 每行第一个为个数后带空格分割整数 (无结束限制,每行有个数限制) // 输入数据有多组, 每行表示一组输入数据。 // 每行的第一个整数为整数的个数n(1 <= n <= 100)。 // 接下来n个正整数, 即需要求和的每个正整数。 // eg: 每组数据输出求和的结果 // 4 1 2 3 4 // 5 1 2 3 4 5 // Scanner in = new Scanner(); // while (()){ // int num = (); // int sum = 0; // for(int i = 0; i < num; i++){ // sum += (); // } // (sum); // } // 7. 多组空格分隔的正整数 (无结束限制,每行无个数限制,需要当作字符串处理) // 输入数据有多组, 每行表示一组输入数据。 // 每行不定有n个整数,空格隔开。(1 <= n <= 100)。 // eg: 每组数据输出求和的结果 // 1 2 3 // 4 5 // 0 0 0 0 0 0 // Scanner in = new Scanner(); // while (()){ // 直接读一行字符串 // String[] s = ().split(" "); // int sum = 0; // for(int i = 0; i < ; i++){ // sum += (s[i]); // } // (sum); // } // 扩展:第一行组数接空格分开的多个整数 (有行数限制,每行无个数限制,需要当作字符串处理) // eg: 每组数据输出求和的结果 // 3 // 1 2 3 // 4 5 // 0 0 0 0 0 Scanner in = new Scanner(System.in); int num = in.nextInt(); in.nextLine(); // 跳过行数所在行 for (int i = 0; i < num; i++ ){ String[] s = in.nextLine().split(" "); int sum = 0; for(int j = 0; j < s.length; j++){ sum += Integer.parseInt(s[j]); } System.out.println(sum); } // 8. 第一行个数第二行字符串 // 输入有两行,第一行n // 第二行是n个空格隔开的字符串 // eg: 输出一行排序后的字符串,空格隔开,无结尾空格 // 5 // c d a bb e // Scanner in = new Scanner(); // int num = (); // (); // while (()){ // String[] s = ().split(" "); // (s); // for (int i = 0; i < ; i++){ // (s[i] + " "); // } // } // 9. 多行空格分开的字符串 // 多个测试用例,每个测试用例一行。 // 每行通过空格隔开,有n个字符,n<100 // eg: 对于每组测试用例,输出一行排序过的字符串,每个字符串通过空格隔开 // a c bb // f dddd // nowcoder // Scanner in = new Scanner(); // while (()){ // String[] s = ().split(" "); // (s); // for (String c:s){ // (c + " "); // } // (); // } // 10. 多行逗号分开的字符串 (逗号和空格的区别就是最后一个字符输完的时候","还是" " ) // 多个测试用例,每个测试用例一行。 // 每行通过,隔开,有n个字符,n<100 // eg: 对于每组用例输出一行排序后的字符串,用','隔开,无结尾空格 // a,c,bb // f,dddd // nowcoder // Scanner in = new Scanner(); // while (()) { // String[] s = ().split(","); // (s); // int l = ; // for (int i = 0; i < l - 1; i++) { // (s[i] + ","); // } // (s[l-1]); // } } }