JAVA 输入输出

JAVA 输入输出JAVA输入输出

大家好,又见面了,我是你们的朋友全栈君。


1 输入输出重定向

 

FileInputStream inputStream = new FileInputStream("输入文件名");
System.setIn(inputStream);
//这个放在下面
Scanner input = new Scanner(System.in);
PrintStream outputStream = new PrintStream("输出文件");
System.setOut(outputStream);
Scanner input = new Scanner(System.in);

2 ACM中java快速输入输出 

P3367 【模板】并查集:https://blog.csdn.net/qq_40794973/article/details/103204372

https://blog.csdn.net/qq_40794973/article/details/88560643

java的Scanner 比较慢(出了名的了),如果需要输入10^{5}数量级的数据并输出同样数量级的数据,使用Scanner和System.out耗时将很可能超过1s

2.1 使用 StreamTokenizer 和 PrintWriter

StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));

2.1.1 判断是否到达文件结尾

Java的while(scanner.hasNext()),或者C的while(scanf(“%d”,&n)!=EOF)

while (in.nextToken() != StreamTokenizer.TT_EOF) {
    //
}

伊格内修斯和公主四世:http://acm.hdu.edu.cn/showproblem.php?pid=1029

import java.io.*;
import java.util.HashMap;
public class Main {
    public static void main(String[] args) throws IOException {
        // io流包装
        StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
        PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
        //StreamTokenizer.TT_EOF这个是个参数,就是EOF
        while (in.nextToken() != StreamTokenizer.TT_EOF) {
            int n = (int) in.nval;
            // 记录出现次数
            HashMap<Integer, Integer> appears = new HashMap<>();
            int max = 0;
            for (int i = 0; i < n; i++) {
                in.nextToken();//指向下一个
                int num = (int) in.nval;
                if (appears.containsKey(num)) {
                    Integer tempNum = appears.get(num);
                    appears.replace(num, tempNum + 1);
                    if (tempNum >= (n + 1) / 2) {
                        max = num;
                    }
                }else {
                    appears.put(num, 1);
                }
            }
            out.println(max);
            out.flush();//刷新,不然max会留在缓冲区
        }
    }
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/141672.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Ubuntu安装GCC 3.4

    Ubuntu安装GCC 3.4Ubuntu安装GCC3.4一、背景二、安装三、总结一、背景因最近学习hit-os编译linux0.11版本内核,需要使用到gcc3.4,故此记录。二、安装#下载deb包wgethttp://old-releases.ubuntu.com/ubuntu/pool/universe/g/gcc-3.4/cpp-3.4_3.4.6-6ubuntu3_amd64.debwgethttp://old-releases.ubuntu.com/ubuntu/pool/universe/g/gc

    2022年7月24日
    10
  • 时限调度算法给出的调度顺序_时间片轮转法进行进程调度

    时限调度算法给出的调度顺序_时间片轮转法进行进程调度调度算法-时间轮一.背景在我们的业务场景中,经常会使用到定时任务功能,比如定时发送消息,定时执行数据同步,比如之前的文章介绍的分布式事务中的本地事务表方式的解决方案等等,特别是在现在大数据量和分布式服务环境下,定时任务调度越来越频繁,所以对应的定时任务调度的算法实现也越来越完善。在之前的单机环境下,我们可以使用ScheduledThreadPool起一个延迟任务线程池,定时的执行任务,又或者使用spring提供的@Schedule注解配合上cron表达式开启一个定时任务,又或者是lin

    2022年9月28日
    3
  • windbg调试dump文件_dump是什么文件夹

    windbg调试dump文件_dump是什么文件夹使用WinDbg分析Windowsdump文件

    2022年9月28日
    3
  • 第一章:什么是数据化运营「建议收藏」

    第一章:什么是数据化运营「建议收藏」1.1现代营销理论的发展历程1.1.1从4P到4C(商品丰富、市场竞争日益激烈、消费者成为商业世界核心)4P(以产品为中心的营销)理论Product(产品):注重产品功能,强调独特卖点Pric

    2022年8月4日
    5
  • vue引入jQuery[通俗易懂]

    vue引入jQuery[通俗易懂]vue引入jQuery

    2022年8月31日
    4
  • 树莓派连接WiFi网络__2019.05.18

    树莓派连接WiFi网络__2019.05.18原文链接:http://sh.qihoo.com/pc/9ac657e0f6b386110?cota=4&tj_url=xz&sign=360_e39369d1&refer_scene=so_1工具/原料树莓派3代方法/步骤1:登录已经刷入系统的树莓派默认用户名pi密码raspberry方法/步骤2:登录系统以后我们使用ifconfig…

    2022年5月1日
    47

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号