Advertisement
calcpage

StdArrayIO.java

Jun 12th, 2012
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 6.44 KB | None | 0 0
  1.  
  2. /*************************************************************************
  3.  *  Compilation:  javac StdArrayIO.java
  4.  *  Execution:    java StdArrayIO < input.txt
  5.  *
  6.  *  A library for reading in 1D and 2D arrays of integers, doubles,
  7.  *  and booleans from standard input and printing them out to
  8.  *  standard output.
  9.  *
  10.  *  % more tinyDouble1D.txt
  11.  *  4
  12.  *    .000  .246  .222  -.032
  13.  *
  14.  *  % more tinyDouble2D.txt
  15.  *  4 3
  16.  *    .000  .270  .000
  17.  *    .246  .224 -.036
  18.  *    .222  .176  .0893
  19.  *   -.032  .739  .270
  20.  *
  21.  *  % more tinyBoolean2D.txt
  22.  *  4 3
  23.  *    1 1 0
  24.  *    0 0 0
  25.  *    0 1 1
  26.  *    1 1 1
  27.  *
  28.  *  % cat tinyDouble1D.txt tinyDouble2D.txt tinyBoolean2D.txt | java StdArrayIO
  29.  *  4
  30.  *    0.00000   0.24600   0.22200  -0.03200
  31.  *  
  32.  *  4 3
  33.  *    0.00000   0.27000   0.00000
  34.  *    0.24600   0.22400  -0.03600
  35.  *    0.22200   0.17600   0.08930
  36.  *    0.03200   0.73900   0.27000
  37.  *
  38.  *  4 3
  39.  *  1 1 0
  40.  *  0 0 0
  41.  *  0 1 1
  42.  *  1 1 1
  43.  *
  44.  *************************************************************************/
  45.  
  46.  
  47. /**
  48.  *  <i>Standard array IO</i>. This class provides methods for reading
  49.  *  in 1D and 2D arrays from standard input and printing out to
  50.  *  standard output.
  51.  *  <p>
  52.  *  For additional documentation, see
  53.  *  <a href="http://introcs.cs.princeton.edu/22libary">Section 2.2</a> of
  54.  *  <i>Introduction to Programming in Java: An Interdisciplinary Approach</i>
  55.  *  by Robert Sedgewick and Kevin Wayne.
  56.  */
  57. public class StdArrayIO {
  58.  
  59.     /**
  60.      * Read in and return an array of doubles from standard input.
  61.      */
  62.     public static double[] readDouble1D() {
  63.         int N = StdIn.readInt();
  64.         double[] a = new double[N];
  65.         for (int i = 0; i < N; i++) {
  66.             a[i] = StdIn.readDouble();
  67.         }
  68.         return a;
  69.     }
  70.  
  71.     /**
  72.      * Print an array of doubles to standard output.
  73.      */
  74.     public static void print(double[] a) {
  75.         int N = a.length;
  76.         StdOut.println(N);
  77.         for (int i = 0; i < N; i++) {
  78.             StdOut.printf("%9.5f ", a[i]);
  79.         }
  80.         StdOut.println();
  81.     }
  82.  
  83.        
  84.     /**
  85.      * Read in and return an M-by-N array of doubles from standard input.
  86.      */
  87.     public static double[][] readDouble2D() {
  88.         int M = StdIn.readInt();
  89.         int N = StdIn.readInt();
  90.         double[][] a = new double[M][N];
  91.         for (int i = 0; i < M; i++) {
  92.             for (int j = 0; j < N; j++) {
  93.                 a[i][j] = StdIn.readDouble();
  94.             }
  95.         }
  96.         return a;
  97.     }
  98.  
  99.     /**
  100.      * Print the M-by-N array of doubles to standard output.
  101.      */
  102.     public static void print(double[][] a) {
  103.         int M = a.length;
  104.         int N = a[0].length;
  105.         StdOut.println(M + " " + N);
  106.         for (int i = 0; i < M; i++) {
  107.             for (int j = 0; j < N; j++) {
  108.                 StdOut.printf("%9.5f ", a[i][j]);
  109.             }
  110.             StdOut.println();
  111.         }
  112.     }
  113.  
  114.  
  115.     /**
  116.      * Read in and return an array of ints from standard input.
  117.      */
  118.     public static int[] readInt1D() {
  119.         int N = StdIn.readInt();
  120.         int[] a = new int[N];
  121.         for (int i = 0; i < N; i++) {
  122.             a[i] = StdIn.readInt();
  123.         }
  124.         return a;
  125.     }
  126.  
  127.     /**
  128.      * Print an array of ints to standard output.
  129.      */
  130.     public static void print(int[] a) {
  131.         int N = a.length;
  132.         StdOut.println(N);
  133.         for (int i = 0; i < N; i++) {
  134.             StdOut.printf("%9d ", a[i]);
  135.         }
  136.         StdOut.println();
  137.     }
  138.  
  139.        
  140.     /**
  141.      * Read in and return an M-by-N array of ints from standard input.
  142.      */
  143.     public static int[][] readInt2D() {
  144.         int M = StdIn.readInt();
  145.         int N = StdIn.readInt();
  146.         int[][] a = new int[M][N];
  147.         for (int i = 0; i < M; i++) {
  148.             for (int j = 0; j < N; j++) {
  149.                 a[i][j] = StdIn.readInt();
  150.             }
  151.         }
  152.         return a;
  153.     }
  154.  
  155.     /**
  156.      * Print the M-by-N array of ints to standard output.
  157.      */
  158.     public static void print(int[][] a) {
  159.         int M = a.length;
  160.         int N = a[0].length;
  161.         StdOut.println(M + " " + N);
  162.         for (int i = 0; i < M; i++) {
  163.             for (int j = 0; j < N; j++) {
  164.                 StdOut.printf("%9d ", a[i][j]);
  165.             }
  166.             StdOut.println();
  167.         }
  168.     }
  169.  
  170.  
  171.     /**
  172.      * Read in and return an array of booleans from standard input.
  173.      */
  174.     public static boolean[] readBoolean1D() {
  175.         int N = StdIn.readInt();
  176.         boolean[] a = new boolean[N];
  177.         for (int i = 0; i < N; i++) {
  178.             a[i] = StdIn.readBoolean();
  179.         }
  180.         return a;
  181.     }
  182.  
  183.     /**
  184.      * Print an array of booleans to standard output.
  185.      */
  186.     public static void print(boolean[] a) {
  187.         int N = a.length;
  188.         StdOut.println(N);
  189.         for (int i = 0; i < N; i++) {
  190.             if (a[i]) StdOut.print("1 ");
  191.             else      StdOut.print("0 ");
  192.         }
  193.         StdOut.println();
  194.     }
  195.  
  196.     /**
  197.      * Read in and return an M-by-N array of booleans from standard input.
  198.      */
  199.     public static boolean[][] readBoolean2D() {
  200.         int M = StdIn.readInt();
  201.         int N = StdIn.readInt();
  202.         boolean[][] a = new boolean[M][N];
  203.         for (int i = 0; i < M; i++) {
  204.             for (int j = 0; j < N; j++) {
  205.                 a[i][j] = StdIn.readBoolean();
  206.             }
  207.         }
  208.         return a;
  209.     }
  210.  
  211.    /**
  212.      * Print the  M-by-N array of booleans to standard output.
  213.      */
  214.     public static void print(boolean[][] a) {
  215.         int M = a.length;
  216.         int N = a[0].length;
  217.         StdOut.println(M + " " + N);
  218.         for (int i = 0; i < M; i++) {
  219.             for (int j = 0; j < N; j++) {
  220.                 if (a[i][j]) StdOut.print("1 ");
  221.                 else         StdOut.print("0 ");
  222.             }
  223.             StdOut.println();
  224.         }
  225.     }
  226.  
  227.  
  228.    /**
  229.      * Test client.
  230.      */
  231.     public static void main(String[] args) {
  232.  
  233.         // read and print an array of doubles
  234.         double[] a = StdArrayIO.readDouble1D();
  235.         StdArrayIO.print(a);
  236.         StdOut.println();
  237.  
  238.         // read and print a matrix of doubles
  239.         double[][] b = StdArrayIO.readDouble2D();
  240.         StdArrayIO.print(b);
  241.         StdOut.println();
  242.  
  243.         // read and print a matrix of doubles
  244.         boolean[][] d = StdArrayIO.readBoolean2D();
  245.         StdArrayIO.print(d);
  246.         StdOut.println();
  247.     }
  248.  
  249. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement