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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Vue调试工具安装(vue devtools)

    Vue调试工具安装(vue devtools)Vue调试工具安装(vuedevtools)第一步:下载源码第二步:执行命令第一步:下载源码在github下载devtools源码,地址:https://github.com/vuejs/vue-devtools。第二步:执行命令下载好后进入vue-devtools-master工程执行cnpminstall,下载依赖,然后执行npmrunbuild,编译源程序。cmd回车后进入到vuedevtools的安装目录下。执行命令:(1)…

    2025年6月9日
    7
  • Java 零拷贝_java clone 深拷贝

    Java 零拷贝_java clone 深拷贝Java零拷贝参考:Java中的零拷贝零拷贝(英语:Zero-copy)技术是指计算机执行操作时,CPU不需要先将数据从某处内存复制到另一个特定区域。这种技术通常用于通过网络传输文件时节省CPU周期和内存带宽。零拷贝技术可以减少数据拷贝和共享总线操作的次数,消除传输数据在存储器之间不必要的中间拷贝次数,从而有效地提高数据传输效率零拷贝技术减少了用户进程地址空间和内核地址空间之间因为上:下文切换而带来的开销传统的IO数据读写如下的例子,Java传统IO和网络编程的一段代码Fi

    2026年2月6日
    6
  • oracle表字段为汉字,依据拼音排序

    oracle表字段为汉字,依据拼音排序

    2021年9月16日
    67
  • 2021年计算机保研-假211真双非三无的失败保研经历(武大/复旦/计算所/华科/同济/上交)

    2021年计算机保研-假211真双非三无的失败保研经历(武大/复旦/计算所/华科/同济/上交)从知乎@孤芳倚花红转过来啦~一、个人情况学校:华中地区211,计算机科学与技术(感觉华中211CS水平都差不多)。英语:CET4-534,预推免CET6-447。夏令营的时候没有六级真的太伤了,第一次裸考没过,第二次忘了报名,幸亏第三次考过了预推免可以用上。成绩:专业排名3/140,预推免2/147。211只有rk1和非rk1,非rk1≈没学上。科研:国家级、省级大创各一项,均是负责人,前者OD,后者SOD。没有论文,但是有一定CV和DL的基础,不惧面试。竞赛:省一及以上数学建模、数学竞赛奖项

    2022年7月25日
    68
  • sqlyog激活成功教程版安装_sqlyog是什么软件

    sqlyog激活成功教程版安装_sqlyog是什么软件百度云:链接:http://pan.baidu.com/s/1eSMEzIE密码:ubi2转载于:https://www.cnblogs.com/haxianhe/p/9271097.html

    2022年9月24日
    6
  • Idea激活码永久有效Idea2019.3.2激活码教程-持续更新,一步到位

    Idea激活码永久有效Idea2019.3.2激活码教程-持续更新,一步到位Idea激活码永久有效2019.3.2激活码教程-Windows版永久激活-持续更新,Idea激活码2019.3.2成功激活

    2022年6月17日
    90

发表回复

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

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