蓝桥杯准备之——java的快速输入输出方法

目录

java的快速输入输出方法 

String,double,int,long的输入

整个字符串(可含空格)的输入

快输出模板


其实在这种算法比赛中有很多的技巧的

那么来看看吧!!


java的快速输入输出方法 

String,double,int,long的输入

import java.io.*;
public class test {
    public static void main(String args[]) throws IOException{
        StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in))); 
        st.nextToken();
        String str = st.sval;//读取String类型数据
        st.nextToken();
        double num1 = st.nval;//读取double类型数据
        st.nextToken();
        int num2 = (int)st.nval;//读取int类型数据
        st.nextToken();
        long num3 = (long)st.nval;//读取long类型数据
    }
}

        可以使用StreamTokenizer类来进行输入操作。当读取字符串类型数据时,可以使用sval方法来获取,该方法以空格或换行符作为分隔符,一次只能读取一个字符串。当读取数字类型数据时,默认为double类型,可以使用nval方法来获取。在每次输入数据之前,需要先调用一次nextToken()方法。记得需要在代码中处理可能抛出的异常。

        再注意:StreamTokenizer读取数字默认是double,这意味着如果你的数据是long并且已经超过了double可以承受的精度,那么会带来精度问题,并没有比较方便的解决方法,只能重新使用Scanner.Longnext();


整个字符串(可含空格)的输入

import java.io.*;
public class test {
    public static void main(String args[]) throws IOException{
//        StreamTokenizer re = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
        BufferedReader re = new BufferedReader(new InputStreamReader(System.in));
        String x = re.readLine();
        System.out.println(x);
    }
}

        

        可以使用BufferedReader类来进行字符串的输出操作。使用readLine()方法可以一次读取整个字符串(包括空格)。这个方法类似于Scanner类中的nextLine()方法的用法,更加简洁。使用BufferedReader类进行输出时,不需要像之前使用StreamTokenizer那样每次都调用nextToken()方法。在使用快速读取之前,不要忘记在代码中抛出可能产生的异常。


快输出模板

import java.io.*;
public class test {
    public static void main(String args[]){
        PrintWriter pw = new PrintWriter(new OutputStreamWriter(System.out));
        pw.print();//不换行输出
        pw.println();//换行输出
        pw.printf();//格式化输出
        pw.flush();//关闭输出流
    }
}

        PrintWriter类的使用更加简单,只需要把我们平时输出时候的System.out替换成对应的快输出的实例对象名(如上代码为 pw),注意最后输出完成记得flush()一下即可。

        在蓝桥杯练习系统中,我随机挑选了两道题。一道使用了快速读取和输出模板,另一道没有使用。你会发现两者在执行速度上的差距非常显著。在那些需要大量输入输出的题目中,这种差异会更加明显。有时候,仅仅一个快速读取输出模板的使用,就能让你在通过(AC)和超出时限(TLE)之间摇摆不定。现在now!!!,试试去使用这个快读快写模板,你会发现它比以前提高了很多效率!

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Java中,带分数可以用分数类来表示。下面是一个简单的带分数类的实现: ```java public class Fraction { private int integer; private int numerator; private int denominator; public Fraction(int integer, int numerator, int denominator) { this.integer = integer; this.numerator = numerator; this.denominator = denominator; simplify(); } private void simplify() { if (numerator < 0 && denominator < 0) { numerator = -numerator; denominator = -denominator; } if (denominator < 0) { numerator = -numerator; denominator = -denominator; } if (integer < 0 && numerator > 0) { numerator = -numerator; } if (integer < 0 && numerator == 0) { integer = -integer; } if (numerator >= denominator) { integer += numerator / denominator; numerator = numerator % denominator; } int gcd = gcd(numerator, denominator); numerator /= gcd; denominator /= gcd; } private int gcd(int a, int b) { if (b == 0) { return a; } return gcd(b, a % b); } public Fraction add(Fraction other) { int newNumerator = this.numerator * other.denominator + other.numerator * this.denominator; int newDenominator = this.denominator * other.denominator; int newInteger = this.integer + other.integer; return new Fraction(newInteger, newNumerator, newDenominator); } public String toString() { if (integer == 0 && numerator == 0) { return "0"; } String result = ""; if (integer != 0) { result += integer; if (numerator != 0) { result += "_"; } } if (numerator != 0) { result += numerator + "/" + denominator; } return result; } } ``` 这个带分数类实现了以下功能: - 构造函数可以根据整数部分、分子和分母创建一个带分数对象。 - simplify() 方法可以将带分数对象化简,如将负号移到分子上、将整数部分和真分数部分合并、将分数化简等。 - add() 方法可以将两个带分数对象相加,返回一个新的带分数对象。 - toString() 方法可以将带分数对象转换为字符串形式。 这个类实现了带分数的加法操作,可以参考这个类来实现其他的运算操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WenJGo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值