// A sketal outline of main
public class driver
{
public static void main(String[] arg)
{
readFromKB kb = new readFromKB();
getData get = new getData(kb);
// Alternately, getData get = new getData(new
readFromKB());
Print p = new Print();
int row = get.RowOrColumn("rows");
int column = get.RowOrColumn("columns");
p.print(row, column);
double [][] matrixA = get.values(row, column);
Matrix m1 = new Matrix(matrixA);
m1.Display();
// :::::::::::::::
// ::::::::::::::::
}
}
Back to the top
// Use the following class to assist you in reading the data from the
keyboard
//readFromKB.java defines a class that can be used to read data from the
keyboard.
import java.io.*;
public class readFromKB
{
private BufferedReader bf;
private String string;
public readFromKB()
{
bf = new BufferedReader(new InputStreamReader(System.in));
string = "";
}
// getChar retrieves the next char, white space or not.
public char getChar()
{
int myValue = 0;
try
{
myValue = bf.read();
}
catch (IOException e)
{
System.out.println(e);
}
return (char) myValue;
}
// peekChar looks at the next char without reading it
public char peekChar()
{
int myValue = 0;
try
{
bf.mark(1); // mark current read-position
myValue = bf.read(); // read a char
bf.reset(); // reset read-position to mark
}
catch (IOException e)
{
System.out.println(e);
}
return (char) myValue;
}
// skipWhiteSpace skips white space chars
public void skipWhiteSpace()
{
int ch;
try
{
for (;;)
{
bf.mark(1); // set mark in buffer
ch = bf.read(); // read a char
if (ch < 1) // if EOF, quit
break;
if (!Character.isWhitespace((char)ch))
{
bf.reset(); // if non-WS, move back to
mark & quit
break;
}
}
}
catch (IOException e)
{
System.out.println(e);
}
}
// readChar reads the next non-white-space char.
public char readChar()
{
skipWhiteSpace(); // eat leading white space
return getChar(); // read the next char
}
// readWord reads the next 'word' (delimited by white space).
public String readWord()
{
int ch; // input variable
String myValue = ""; // myValue is initially
empty
skipWhiteSpace(); // eat leading white space
for (;;)
{
ch = peekChar(); // check out next char
if (ch < 1 || Character.isWhitespace((char)ch))
break;
ch = getChar();
myValue += (char) ch; // append it to myValue
}
return myValue;
}
// readInt reads the next word as an integer value.
public int readInt()
{
string = readWord();
return Integer.parseInt(string);
}
//readFloat tries to read the next word as a float value.
public double readFloat()
{
string = readWord();
return Float.parseFloat(string);
}
//readDouble tries to read the next word as a double value.
public double readDouble()
{
string = readWord();
return Double.parseDouble(string);
}
}
Back to the top
// Read the data
public class getData
{
readFromKB kb;
public getData(readFromKB kb)
{
this.kb = kb;
}
int RowOrColumn(String str)
{
System.out.println("Enter the number of " + str);
int row = kb.readInt();
return row;
}
double[][] values(int rows, int columns)
{
double arr[][] = new double[rows][columns];
// Read the data and return it
return arr;
}
}
// Partial definition
public class Matrix
{
//--- Attributes ---
private int myRows;
private int myColumns;
private double [][] myArray;
//--- Possible forms of Constructors ---
// Default constructor
public Matrix()
{
myArray = null;
myRows = 0;
myColumns = 0;
}
//Explicit-Value Constructor
public Matrix(int rows, int columns)
{
myArray = new double[rows][columns];
myRows = rows;
myColumns = columns;
}
public Matrix(double[][] m)
{
myArray = m;
myRows = m.length;
myColumns = m[0].length;
}
public void Display()
{
for (int i = 0; i < myRows; i++)
{
for(int j = 0 ; j < myArray[i].length;
j++)
System.out.print(myArray[i][j] + "
" );
System.out.println();
}
}
// Complete the definition for this class
//:::::::::::::::::::::::
}
Back to the top
public class Print
{
Print(){}
void print(int row, int col)
{
System.out.println("Matrix 1 is a " + row + " by " + col+
" matrix" );
}
//::::::::::::::
}