今天又遇到java做ACM超时的问题。

然后网上找了好多方法,最后总结出自己的。

java的Scanner 比较慢(出了名的了),但是ACM的要求有比较高。

java其实有别的解决方案,就是使用StreamTokenizer与PrintWriter。

也有大神有人使用别的方法,但我觉的都太麻烦了。

首先是定义:

StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));

PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));然后怎么判断是否到达文件结尾呢?

(相当于Java的while(scanner.hasNext()),或者C的while(scanf("%d",&n)!=EOF))

答案是:

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

StreamTokenizer.TT_EOF这个是个参数,就是相当于EOF了。

还有一些问题例如怎么读取,输出,等等,可以看下面的AC代码

题目链接是:http://acm.hdu.edu.cn/showproblem.php?pid=1029

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.io.PrintWriter;

import java.io.StreamTokenizer;

public class P1029 {

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;

int appears[] = new int[32768];// 记录出现次数

int max = 0;

for (int i = 0; i < n; i++) {

in.nextToken();//指向下一个

int num = (int) in.nval;//scanner.nextInt();

appears[num]++;

if (appears[num] >= (n + 1) / 2) {

max = num;

}

}

out.println(max);

out.flush();//刷新,不然max会留在缓冲区

}

}

}

acm java输入输出_ACM中java如何快速输入输出相关推荐

  1. acm之java输入输出_ACM中Java输入输出

    最初写算法时,是用Scanner的.因为当时接触的测试数据基本都是以算法的复杂度为主,但是后面遇到大量的输入数据时.发现Scanner远远不能满足条件.下面列出几种常用的输入输出方式.(输出统一用pr ...

  2. 安卓JAVA调用lua_android中java与lua的相互调用

    Android Studio Lua环境配置 开发环境 1. Android Studio 3.5 2. java sdk: 1.8.0 3.android sdk:28 配置环境 添加lua支持语法 ...

  3. vscode java环境_VSCode中Java开发环境的配置方法

    vscode中怎么搭建Java开发环境?下面本篇文章给大家介绍一下VSCode配置Java开发环境的方法.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 配置Java开发环境 主要参 ...

  4. acm教程 java版_ACM之java速成 (转)

    //这里指的java速成,只限于java语法,包括输入输出,运算处理,字符串和高精度的处理,进制之间的转换等,能解决OJ上的一些高精度题目. //1. 输入: // 格式为:Scanner cin = ...

  5. ebs java并发_EBS中Java并发程序笔记(1)

    在Oracle EBS中的Java并发程序(Java Concurrent Program)是系统功能中的一个亮点,它的出现使得用户可以在ERP系统中运行自己定义的Java程序.本文为学习笔记,所以不 ...

  6. Java笔记-JNI中Java与C语言解决中文乱码问题

    目录 基本概念 演示过程 基本概念 这里我把他总结成4个步骤: 1. 找类,Java的String: 2. 找函数String类的方法,成员函数: 3. 设置要转换的字符和编码: 4. 程序生成编码后 ...

  7. java职业教育考试题_Java认证考试中Java构造方法题目解答

    [Java认证考试中Java构造方法题目解答]java中,在创建一个新的对象的时候,会调用其父亲的构造方法,测试程序如下: class parent{ int a=5; public parent() ...

  8. 【Java】9、Java IO 流

    文章目录 IO 流 什么是 IO 字节流 字节流概念 字节流读写文件 文件的拷贝 字节流的缓冲区 装饰设计模式 字节缓冲流 字符流 字符流定义及基本用法 字符流操作文件 转换流 File 类 File ...

  9. java程序设计有理数,《Java程序设计》复习题

    <Java程序设计>复习题 "++"运算符的操作数个数是 A. 1个 B. 2个 C. 3个 D. 4个 ## Character流与Byte流的区别是 A. 每次读入 ...

最新文章

  1. 美国《消费者报告》实测特斯拉Model 3,“完全自动驾驶”名不符实
  2. 16种JavaScript设计模式(中)
  3. python什么是数据结构_〖Python〗-- 数据结构
  4. jax-ws实现WebService
  5. 时间加减计算器_手机上的计算器这样也可以,太方便了,赶快转告家人朋友
  6. raft算法与paxos算法相比有什么优势,使用场景有什么差异?
  7. tensorflow lstm从隐状态到预测值_机器学习100天-Day2405 循环神经网络RNN(LSTM)
  8. HTML5 API详解(15):History 不刷新也可以实现网页跳转
  9. 4月15日见?疑似一加8 Pro真机谍照曝光:开孔双曲面屏加持
  10. ASP.NET TreeView控件各个节点总是居中对齐,而不是左对齐的问题
  11. 通过了面试,却不会和hr聊薪水?
  12. php动态页面在ie浏览器中css布局板块全缩在中间,CSS网页布局开发时的常见问题及解决方法...
  13. 手机麦克风结构原理图_麦克风阵列的基本原理、结构组成及声学效果简介
  14. 论文Real-Time Lane and Obstacle Detection on the global System
  15. 适合老爸用的在线的LaTeX数学公式编辑器
  16. 关于Win10与Ubuntu18.04的装机教程与疑问解答
  17. 按例学construct2_滚动背景制作 (一)
  18. fedora14安装出错
  19. PhpStorm中实现代码自动换行
  20. Python编程-从入门到实践第15章课后习题详解

热门文章

  1. linux内核阅读感悟,读Kernel感悟-Linux内核启动-从hello world说起
  2. nodejs操作mysql查询返回的数据_nodejs连接mysql进行数据库查询返回前台数据的坑...
  3. mysql怎么添加默认约束_分享知识-快乐自己:MySQL中的约束,添加约束,删除约束,以及一些其他修饰...
  4. div滚动条怎么设置_【20201123】做个用户管理系统(7)——个人资料修改页面、用户头像设置页面的模板的制作...
  5. Android 屏幕(View)坐标系统
  6. Handler sendMessage 与 obtainMessage (sendToTarget)比较
  7. struts2中文乱码问题
  8. 如何计算java对象占用的内存
  9. Reddit 评级算法的工作原理
  10. Windows8 游戏开发教程-开篇