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


相关推荐

  • java毕业设计_校园二手交易平台

    java毕业设计_校园二手交易平台校园二手交易平台mysql数据库创建语句校园二手交易平台oracle数据库创建语句校园二手交易平台sqlserver数据库创建语句校园二手交易平台spring+springMVC+hibernate框架对象(javaBean,pojo)设计校园二手交易平台spring+springMVC+mybatis框架对象(javaBean,pojo)设计校园二手交易平台登录注册界面校园二手交易平…

    2022年6月16日
    18
  • html 清除计时器,定时器-清除定时器

    html 清除计时器,定时器-清除定时器清除定时器重要知识点setInterval(启动)clearInterval(清除)settimeout(启动-)clearTimeout(清除-)清除时钟函数要对应清除定时器functionbang(){//找到time属性赋值给inp,返回整数5-1赋值给time把time赋值给valuevarinp=document.getElementsByName(“…

    2025年7月6日
    1
  • gis可视化的方法_gis可视化分析

    gis可视化的方法_gis可视化分析前言从去年开始无脑接触Cesium三维GIS可视化,入坑之后一直到到现在,其实已经写了多个项目了,中间也遇到了很多坑点,很早就想分享其中所获了,只是觉得不太专业而且没有太多时间,…

    2022年9月1日
    2
  • css自动换行属性与保留空白属性冲突_css换行样式

    css自动换行属性与保留空白属性冲突_css换行样式word-break属性规定自动换行的处理方法。提示:通过使用word-break属性,可以让浏览器实现在任意位置的换行。所有主流浏览器都支持word-break属性。语法:word-break:normal|break-all|keep-all;normal使用浏览器默认的换行规则。break-all允许在单词内换行。keep-all只能在半角空格或连字符处换行。word-break:break-all所有的都换行,右侧换行没有空隙。word-wrap属性允许

    2025年6月27日
    0
  • 使用u盘之前需要将其格式化_使用g中的光盘之前需要将其格式化

    使用u盘之前需要将其格式化_使用g中的光盘之前需要将其格式化本人使用一个外置硬盘,结果每次下载东西都需要重新格式化,从网上找了下方法,发现Windows有自动修复的工具,不用每次格式化。1.首先进入运行,保证自己管理员模式,通过"Windows键+

    2022年8月6日
    3
  • 光盘制作软件UltraISO软碟通-原版下载+正版注册码

    光盘制作软件UltraISO软碟通-原版下载+正版注册码下载地址为官方下载,个人再提供个正版注册码!一、简要软件类型:光碟工具出品商:EZBSystems语言:中文简体运行平台:WindowsVista,WindowsServer2003,WindowsXP,Windows2000等二、功能UltraISO是一款功能强大而又方便实用的光盘映像文件制作/编辑/格式转换工具。它可以直接编辑光盘映像和从映像中直接提取…

    2022年7月26日
    1

发表回复

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

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