JS和java在牛客编程题上输入输出的总结

JS:

举例说明

简单来说,输入数据用readline()读取,输出结果用print() 或console.log()输出,下面举几个例子:

1.输入一行,输出一行

var line = readline();
print();
//或者
while(line = readline()){
    //Do some operation
    print();
}

2.输入两行,输出一行

var line = readline();
var num = parseInt(readline());
print();

3.输入数据有多组,每组单独占一行,对于输入的每组数据,对应输出多组,每组单独占一行(这种情况和例子1是一样的处理方法)

var line = readline();
print();
//或者
while(line = readline()){
    //Do some operation
    print();
}

4.输入数据有多组,每组占两行,对于输入的每组数据,对应输出多组,每组单独占一行(这种情况和例子2是一样的处理方法)

var line = readline();
var num = parseInt(readline());
print();

5.输入数据第一行表示测试样例数,接下来的n行表示n组测试样例,对于输入的每组测试样例,对应输出n组数据

var num = parseInt(readline());
while(line = readline()){
    //Do some operation
    print();
}

6.输入n行,输出一行

while(line = readline()){
    //Do some operation
}
print();

注意:上面的例子是读取输入数据和输出数据,读取到的数据还要处理。 
例如输入包括一行,用空格分开的两个正整数,那么用var line = readline()读取到输入数据之后,还要将读取到的字符串转为数组var arr = line.split(' ');然后经过var num1 = parseInt(arr[0]), num2 = parseInt(arr[1])读取到输入的两个正整数。总之,还需要多实践,慢慢就知道牛客网在线编程的套路了

 

 

java:

1、

//输入描述:

//输入包括2行:

//第一行为整数n(1 <= n <= 50),即抹除一个数之后剩下的数字个数

//第二行为n个整数num[i] (1 <= num[i] <= 1000000000)

import java.util.*;
public class Next {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int N=sc.nextInt();
        int[] num = new int[N];
        for (int i = 0; i < N; i++) {
            num[i] = sc.nextInt();
        }
        //System.out.println("hallo");
    }

}

2、

import java.util.*;
public class Main{

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        char[] arr = str.toCharArray();
   }}

3、

输入描述:

输入包括n+1行:

第一行为单词个数n(1 ≤ n ≤ 50)

接下来的n行,每行一个单词word[i],长度length(1 ≤ length ≤ 50)。由小写字母构成

输出描述:

输出循环单词的种数

 

输入例子:

5
picture
turepic
icturep
word
ordw

 

输出例子:

2

package string.test;
import java.util.Scanner;
public class Demo1 {
    private int N;
    private String[] arr;
    private int count;
    public static void main(String[] args) {
        Demo1 demo = new Demo1();
        Scanner sc = new Scanner(System.in);
        demo.N = sc.nextInt();
        demo.arr = new String[demo.N];
        for (int i = 0; i < demo.N; i++) {
            String str = sc.next();
            demo.solve(str);
        }
        System.out.println(demo.count);
        for (int i = 0; i < demo.count; i++) {
            System.out.println(demo.arr[i]);
        }
        sc.close();
    }
    private void solve(String str) {
        if (count == 0) {
            arr[0] = str + str;
            count++;
            return;
        }
        boolean flag = false;
        int num = count;
        for (int i = 0; i < num; i++) {
            //如果包含该单词,吧flag设置成ture,循环结束要记得把flag重新设置成false
            if (judge(arr[i], str)) {
                flag = true;
                break;
            }
        }
        if (flag != true) {
            arr[count++] = str + str;
 
        }
        flag = false;
    }
    /*
     * 如果str1包含str2.则返回true
     */
    private boolean judge(String str1, String str2) {
        if (str1.length() == str2.length())
            return false;
        //这里必须要验证str2是否为str1的一半,否则会无法通过
        if (str1.contains(str2) && str1.length() == str2.length() * 2)
            return true;
        return false;
    }
}
 

### 关于Java输入输出的学习资源与示例 #### 学习资源概述 对于希望深入理解Java输入输出机制的开发者而言,牛客网提供了丰富的学习资料实践机会。该平台不仅涵盖了基础概念讲解,还通过实际案例帮助用户掌握不同场景下的应用技巧[^1]。 #### 基础输入输出操作 在处理基本的数据交互时,可以采用`Scanner`类来获取来自标准输入流的信息,并利用控制台打印函数完成结果展示。下面是一个简单的加法运算程序实例: ```java import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner in = new Scanner(System.in); while (in.hasNextInt()){ int a = in.nextInt(); int b = in.nextInt(); System.out.println(a + b); } } } ``` 此段代码能够连续接收两组整数并计算它们之直至遇到非整数值为止[^4]。 #### 处理多行或多组数据 当面对更复杂的情况——比如一次性读入多个测试样例或需按照特定格式解析输入内容,则可调整逻辑结构以适应需求变化。例如,在给定首行为总数的情况下逐行解析后续条目: ```java import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int n = Integer.parseInt(sc.nextLine()); // 获取总行数 for(int i=0;i<n;i++){ String[] nums = sc.nextLine().split(" "); long a = Long.parseLong(nums[0]); long b = Long.parseLong(nums[1]); System.out.println(a + b); } } } ``` 上述例子展示了如何先读取一个指示有多少个待处理项的数量n,之后循环执行相应次数的操作[^2]。 #### 特殊情况考虑 考虑到某些特殊情况下可能涉及到非常大的数值范围(如超过Integer的最大值),应选用合适的数据类型存储变量,像上面的例子中就改用了long型来代替int型确保准确性[^3]。 #### 字符串排序输出 除了数字类型的简单相加外,还有其他形式的任务等待探索。例如对每行中的单词按字典序排列再输出: ```java import java.util.*; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNextLine()){ String [] strs = in.nextLine().split(" "); Arrays.sort(strs); StringBuilder sb = new StringBuilder(); for(String s : strs){ sb.append(s).append(" "); } System.out.println(sb.toString().trim()); } } } ``` 这段代码实现了将每一行内的词语依据字母顺序重新组合后显示的功能[^5]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值