首页 > 代码库 > 算法(第4版)-1.1.9 输入输出

算法(第4版)-1.1.9 输入输出

总结:本小节讲述了输入输出的知识,包括标准输出、格式化输出、标准输入、重定向与管道、基于文件的输入输出、标准绘图库等。

 

重点:

 

1.在我们的模型中,Java程序可以从命令行参数或者一个名为标准输入流的抽象字符流中获得输入,并将输出写入另一个名为标准输出流的字符串中。

 

2.格式化输出规则:

· 常用的转换代码包括:

  · d:用于Java整型的十进制数

  · f:浮点数

  · s:字符串

· 在%和转换代码之间可以插入一个整数来表示转换之后的值的宽度,即输出字符串的长度。

默认情况下,转换后会在字符串的左边添加空格以达到需要的宽度,如果我们想在右边加入空格则应该是用负宽度(如果转换得到的字符串比设定宽度要长,宽度会被忽略)。

· 在宽度之后我们还可以插入一个小数点以及一个数值来指定转换后的double值保留的小数位数(精度)或是String字符串所截取的长度。

 

3.将这些结合起来,将一个程序的输出重定向为另一个程序的输入叫做管道。

这种差别影响非常深远,因为他突破了我们能够处理的输入输出流的长度限制。

 

4.在本书中,我们会在数据分析和算法的可视化中使用StdDraw。

 

5.StdDraw绘图举例:

 

· 函数值

public class Hanshuzhi {    public static void main(String[] args) {        int N = 100;        StdDraw.setXscale(0, N);        StdDraw.setYscale(0, N * N);        StdDraw.setPenRadius(.01);        for (int i = 1; i <= N; i++) {            StdDraw.point(i, i);            StdDraw.point(i, i * i);            StdDraw.point(i, i * Math.log(i));        }    }}

技术分享

 

· 随机数组

@SuppressWarnings("deprecation")public class Suijishuzu {    public static void main(String[] args) {        int N = 50;        double[] a = new double[N];        for (int i = 0; i < N; i++)            a[i] = StdRandom.random();        for (int i = 0; i < N; i++) {            double x = 1.0 * i / N;            double y = a[i] / 2.0;            double rw = 0.5 / N;            double rh = a[i] / 2.0;            StdDraw.filledRectangle(x, y, rw, rh);        }    }}

技术分享

 

· 已排序的随机数组

import java.util.*;@SuppressWarnings("deprecation")public class Yipaixudesuijishuzu {    public static void main(String[] args) {        int N = 50;        double[] a = new double[N];        for (int i = 0; i < N; i++)            a[i] = StdRandom.random();        Arrays.sort(a);        for (int i = 0; i < N; i++) {            double x = 1.0 * i / N;            double y = a[i] / 2.0;            double rw = 0.5 / N;            double rh = a[i] / 2.0;            StdDraw.filledRectangle(x, y, rw, rh);        }    }}

技术分享

算法(第4版)-1.1.9 输入输出