当前位置:   article > 正文

ACM模式小结-Java_acm模式java怎么读取数组

acm模式java怎么读取数组

可以通过牛客相关OJ活动进行练习,链接:https://ac.nowcoder.com/acm/contest/5652#question

方法一:Scanner

1. 输入模块:

方法1:

Scanner sc = new Scanner (new BufferedInputStream(System.in));
  • 1

方法2:

Scanner sc = new Scanner (System.in);
  • 1

在读入数据量大的情况下,方法1的速度会快些。

2. 判别模块

判断是否有下一个输入可以用sc.hasNext()sc.hasNextInt()sc.hasNextDouble()sc.hasNextLine()

3.读取模块

读一个整数:

int num= sc.nextInt();

读一个字符串:

String str= sc.next();

读一个浮点数:

double dou= sc.nextDouble();

读一整行:

String lin= sc.nextLine();

代码模板

import java.io.*;
import java.util.*;
 public class Main{
     public static void main(String[] args)throws Exception{
         //输入模块
          Scanner sc=new Scanner(new BufferedInputStream(System.in));
          int a=0,...;
         //判别模块
          while(sc.hasNext()){
              //读取模块
              a=sc.nextInt();
              ...
              //上面根据需求修改读取模块代码
              System.out.println(输出结果);//该处是为了防止整数整数越界设置的,可以根据需求更改输出
          }
      }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

tips:

hasNext():读取下一个目标,判断它是否存在

这里括号里可以添加终止条件字符/字符串,变成 while(!sc.hasnext("终止字符串"))格式,遇到终止字符实现跳出循环

nextxxx(): 读取当前输入中的指定格式目标

方法二:BufferedReader

1.输入模块

BufferedReader bu=new BufferedReader(new InputStreamReader(System.in));
  • 1

2.判别模块

遇到空输入就直接跳出读取循环(这里str声明什么的到后面模板会看到)

(str=bu.readLine())!=null
  • 1

3. 读取模块

针对一行多个数据的情况下,这里首先必须添加split方法对数据进行分割。

String[] tmp=str.split("分割符");
  • 1

或者

bu.readLine().split("分割符");
  • 1

生成的格式是字符串数组的格式,这里就按照数组读取的格式将数组转化成自己想要的格式

基本类型 变量名=包装类.parsexxx;//这里自行查找,因为暂时没找到比较全的总结素材····
  • 1

代码模板:

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

public class Main{
    public static void main(String[] args) throws IOException{
        
        //输入模块
        BufferedReader bu=new BufferedReader(new InputStreamReader(System.in));
        String str;
        
        //判别模块
        while((str=bu.readLine())!=null){
            
            //终止模块
            if(str.equals("终止字符串")) break;
            
            //分割模块
            String[] tmp=str.split("分割字符串");
            
            //读取模块,下面以整数数组为例
            int l=Integer.parseInt(tmp[0]);     
            System.out.println(l);
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

资料参考:

  1. Scanner类的next()方法与hasnext()方法最详细的用法解释
  2. ACM之Java输入输出
  3. 练习:hasNext()与Next()的不同
  4. ACM之Java输入输出
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/419052
推荐阅读
相关标签
  

闽ICP备14008679号