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会留在缓冲区
        }
    }
}

 

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • LVS DR负载均衡配置

    LVS DR负载均衡配置

  • R语言plot参数_plot函数参数

    R语言plot参数_plot函数参数最近用R语言画图,plot函数是用的最多的函数,而他的参数非常繁多,由此总结一下,以供后续方便查阅。plot(x,y=NULL,type="p",xlim=NULL,ylim=NULL,log="",main=NULL,sub=NULL,xlab=NULL,ylab=NULL,ann=par("ann"),axes=TRUE,fra…

    2022年10月15日
  • Tomcat配置SSL证书(PFX证书)

    Tomcat配置SSL证书(PFX证书)Symantec提供免费版SSL,可快速免费申请一、什么是SSL(证书)?    SSL证书服务(AlibabaCloudSSLCertificatesService)由阿里云联合多家国内外数字证书管理和颁发的权威机构、在阿里云平台上直接提供的服务器数字证书。您可以在阿里云平台上直接购买、或者免费获取所需类型的数字证书,并一键部署在阿里云…

  • MFC 进度条使用方法[通俗易懂]

    MFC 进度条使用方法[通俗易懂]目的:学习MFC进度条控件的用法;步骤:新建一个对话框项目。添加控件“progress”“static”è改名了“进度”,添加两个BUTTON名字分别为“后退”“前进”,如下图:为static控件添加CString类型的数据变量m_present;为progress添加control类型的数据变量m_pro初始化进度条:右键classwinzerd,选中如下项目

  • nodejs npm 卸载 + 重新安装「建议收藏」

    nodejsnpm卸载sudonpmuninstallnpm-gsudorm-rf/usr/local/lib/node/usr/local/lib/node_modules/var/db/receipts/org.nodejs.*sudorm-rf/usr/local/include/node/Users/$USER/.npmsudo…

  • 项目范围管理:项目范围管理的概念是什么_项目范围管理规划案例

    项目范围管理:项目范围管理的概念是什么_项目范围管理规划案例项目范围管理包括确保项目做且只做所需的全部工作,以成功完成项目的各个过程。 项目范围管理关注的焦点是:什么是包括在项目之内的,什么是不包括在项目之内的,即为项目工作明确划定边界。 对项目范围管理和控制的有效性,是衡量项目是否达到成功的一个必要标准,项目范围的管理不仅仅是项目整体管理的一个主要部分,同时在项目中不断地重申项目工作范围,有利于项目不偏离轨道,是项目中实施控制管理的一个主要手段。 项目范围是项目其他各方面管理的基础。如果范围都弄不清楚,成本、进度和质量等就无从谈起。确认项目范围对项目管理有如

发表回复

您的电子邮箱地址不会被公开。

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