write comments for two java programs
Q1. Consider a two-by-three integer array t. (14 points)
a) Write a statement that declares and creates t.
int t [] [] = new int [2] [3];
b) How many rows does t have?
It has two rows;
c) How many columns does t have?
It has three columns;
d) How many elements does t have?
It has six elements;
e) Write access expressions for all the elements in row 1 of t.
t[1] [0], t[1][1],t[1][2];
f) Write access expressions for all the elements in column 2 of t.
t[0][2],t[1][2];
g) Write a single statement that sets the element of t in row 0 and column 1 to zero.
t[0][1]=0;
h) Write individual statements to initialize each element of t to zero.
t[0][0] = 0;
t[0][1] = 0;
t[0][2] = 0;
t[1][0] = 0;
t[1][1] = 0;
t[1][2] = 0;
i) Write a nested for statement that initializes each element of t to zero.
for ( int j =0; j<t.length; j++)
for(int k = 0; k<t[j].length; k++)
t[j][k] = 0;
j) Write a nested for statement that inputs the values for the elements of t from the
user.
Scanner keyboard = new Scanner (System.in);
for ( int r = 0; r<t.length; r++)
for(int c = 0; c < t[r].length; c++)
t[r][c] = keyboard.nextInt();
k) Write a series of statements that determines and displays the smallest value in t.
int small = t[0] [0];
for ( int x = 0; x < t.length; x++)
for( int y = 0; y < t[x].length; y++)
{
if (t[x][y] < small)
small = t[x][y];
}
System.out.println(“Smallest Value :” + small);
l) Write a single printf statement that displays the elements of the first row of t.
System.out.printf(t[0][0] + “” + t[0][1] + “” +t[0][2]);
m) Write a statement that totals the elements of the third column of t. Do not use
repetition.
InTotal = t[0][2] + t[1][2];
n) Write a series of statements that displays the contents of t in tabular format. List
the column indices as headings across the top, and list the row indices at the left
of each row
System.out.println(“ 0 1 2 “ ) ;.
for ( int i = 0; i < t.length; i++)
{
System.out.print(i + “”);
for (int j = 0; j < t[1].length; j++)
System.out.print(t[i][j] + “”);
System.out.println();
}
Q2. (Game of Craps) Write an application that runs 1,000,000 games of craps (Fig. 6.8 of your
textbook) and answer the following questions: (10 points)
a) How many games are won on the first roll, second roll, …, twentieth roll and after
the twentieth roll?
b) How many games are lost on the first roll, second roll, …, twentieth roll and after
the twentieth roll?
c) What are the chances of winning at craps? [Note: You should discover that craps
is one of the fairest casino games. What do you suppose this means?]
d) What is the average length of a game of craps?
e) Do the chances of winning improve with the length of the game?
|
001 |
import java.util.Random; |
|
002 |
|
|
003 |
|
|
004 |
public class GameOfCraps { |
|
005 |
private Random randomNumbers=new Random(); |
|
006 |
private enum Status{Continue, Won, Lost}; |
|
007 |
int[] GamesWon; |
|
008 |
int[] GamesLost; |
|
009 |
int winTotal; |
|
010 |
int loseTotal; |
|
011 |
|
|
012 |
public void play(){ |
|
013 |
int totalOfDice=0; |
|
014 |
int myPoints=0; |
|
015 |
Status gameStatus; |
|
016 |
int roll; |
|
017 |
GamesWon=new int[22]; |
|
018 |
GamesLost=new int[22]; |
|
019 |
for(int x=1; x<=1000; x++){ |
|
020 |
totalOfDice=rollDice(); |
|
021 |
roll=1; |
|
022 |
switch(totalOfDice){ |
|
023 |
case 7: |
|
024 |
case 11: |
|
025 |
gameStatus=Status.Won; |
|
026 |
break; |
|
027 |
case 2: |
|
028 |
case 3: |
|
029 |
case 12: |
|
030 |
gameStatus=Status.Lost; |
|
031 |
break; |
|
032 |
default: |
|
033 |
gameStatus=Status.Continue; |
|
034 |
myPoints=totalOfDice; |
|
035 |
break; |
|
036 |
} |
|
037 |
while(gameStatus==Status.Continue){ |
|
038 |
totalOfDice=rollDice(); |
|
039 |
roll++; |
|
040 |
if(totalOfDice==myPoints) |
|
041 |
gameStatus=Status.Won; |
|
042 |
else if(totalOfDice==7) |
|
043 |
gameStatus=Status.Lost; |
|
044 |
} |
|
045 |
if(roll>21) |
|
046 |
roll=21; |
|
047 |
if(gameStatus==Status.Won){ |
|
048 |
GamesWon[roll]++; |
|
049 |
winTotal++; |
|
050 |
} |
|
051 |
else{ |
|
052 |
GamesLost[roll]++; |
|
053 |
loseTotal++; |
|
054 |
} |
|
055 |
} |
|
056 |
printStats(); |
|
057 |
} |
|
058 |
public void printStats(){ |
|
059 |
int totalGames=winTotal+loseTotal; |
|
060 |
int length=0; |
|
061 |
int RollsToWin; |
|
062 |
int RollsToLose; |
|
063 |
|
|
064 |
for(int x=1; x<=21; x++){ |
|
065 |
if(x==21) |
|
066 |
System.out.printf("\n%d games won and %d games lost on rolls after the 20th roll", GamesWon[21],GamesLost[21] ); |
|
067 |
else |
|
068 |
if(x<=21) |
|
069 |
System.out.printf("\n%d games won and %d games lost on roll %d", GamesWon[x], GamesLost[x], x); |
|
070 |
|
|
071 |
RollsToWin=(1*GamesWon[1])+(2*GamesWon[2])+(3*GamesWon[3])+ |
|
072 |
(4*GamesWon[4])+(5*GamesWon[5])+(6*GamesWon[6])+(7*GamesWon[7])+ |
|
073 |
(8*GamesWon[8])+(9*GamesWon[9])+(10*GamesWon[10])+(11*GamesWon[11])+ |
|
074 |
(12*GamesWon[12])+(13*GamesWon[13])+(14*GamesWon[14])+(15*GamesWon[15])+ |
|
075 |
(16*GamesWon[16])+(17*GamesWon[17])+(18*GamesWon[18])+(19*GamesWon[19])+ |
|
076 |
(20*GamesWon[20])+(21*GamesWon[21]); |
|
077 |
|
|
078 |
RollsToLose=(1*GamesLost[1])+(2*GamesLost[2])+(3*GamesLost[3])+ |
|
079 |
(4*GamesLost[4])+(5*GamesLost[5])+(6*GamesLost[6])+(7*GamesLost[7])+ |
|
080 |
(8*GamesLost[8])+(9*GamesLost[9])+(10*GamesLost[10])+(11*GamesLost[11])+ |
|
081 |
(12*GamesLost[12])+(13*GamesLost[13])+(14*GamesLost[14])+(15*GamesLost[15])+ |
|
082 |
(16*GamesLost[16])+(17*GamesLost[17])+(18*GamesLost[18])+(19*GamesLost[19])+ |
|
083 |
(20*GamesLost[20])+(21*GamesLost[21]); |
|
084 |
|
|
085 |
length=(RollsToLose+loseTotal)+(RollsToWin+winTotal); |
|
086 |
|
|
087 |
} |
|
088 |
if((GamesWon[1]/GamesWon[1]+GamesLost[1])>(GamesWon[3]/GamesWon[3]+GamesLost[3])&&(GamesWon[3]/GamesWon[3]+GamesLost[3])>(GamesWon[5]/GamesWon[5]+GamesLost[5])) |
|
089 |
System.out.printf("\nChances of winning decrease as rolls increase"); |
|
090 |
else |
|
091 |
System.out.printf("\nChances of winning increase as rolls increase"); |
|
092 |
|
|
093 |
System.out.printf("\n%s %d / %d = %.2f%%\n", "The chances of winning are", winTotal, totalGames, (100.0*winTotal/totalGames)); |
|
094 |
System.out.printf("The average game length is %.2f rolls.\n", ((double)length/totalGames)); |
|
095 |
} |
|
096 |
|
|
097 |
public int rollDice(){ |
|
098 |
int die1=1+randomNumbers.nextInt(6); |
|
099 |
int die2=1+randomNumbers.nextInt(6); |
|
100 |
int sum=die1+die2; |
|
101 |
return sum; |
|
102 |
} |
|
103 |
public static void main(String args[]){ |
|
104 |
GameOfCraps game=new GameOfCraps(); |
|
105 |
game.play(); |
|
106 |
|
|
107 |
} |
|
108 |
|
|
109 |
Q3. (Simulation: The Tortoise and the Hare)
import java.util.*;
public class tortouseAndHare
{public static void main(String []args)
{int finish=70,tort=1,hare=1,rtime=0;
System.out.println("ON YOUR MARK, GET SET\nBANG !!!!!\nAND THEY'RE OFF !!!!!\n");
do
{hare=movehare(hare);
tort=movetort(tort);
print(tort,hare);
rtime++;
}while(tort<finish&&hare<finish);
if(tort>hare )
System.out.println("TORTOISE WINS!!! YAY!!!\n");
else if(tort<hare )
System.out.println("Hare wins. Yuch. \n");
else
System.out.println("Would you believe IT\'S A TIE!!\n");
System.out.println("time of race: "+rtime+" simulated seconds\n");
}
public static void print(int t,int h)
{int i;
if(h==t)
{for(i=0;i<h;i++)
System.out.print(" ");
System.out.println("OUCH!!!");
}
else if(h<t)
{for(i=0;i<h;i++)
System.out.print(" ");
System.out.print("H");
for(i=0;i<(t-h);i++)
System.out.print(" ");
System.out.print("T");
}
else
{for(i=0;i<t;i++)
System.out.print(" ");
System.out.print("T");
for(i=0;i<(h-t);i++)
System.out.print(" ");
System.out.print("H");
}
System.out.println();
}
public static int movehare(int r )
{int num;
num=(int)(Math.random()*10);
if(num<2)
r-=2;
else if(num<5)
r++;
else if(num<6)
r-=12;
else if(num<8)
r+=9;
if(r< 1 )
r=1;
return r;
}
public static int movetort(int t)
{int num;
num=(int)(Math.random()*10);
if(num<5)
t+=3;
else if(num<7)
t-= 6;
else
t++;
if(t<1)
t=1;
return t;
}
}
7. Write an inheritance hierarchy for classes Quadrilateral, Trapezoid, Parallelogram,
Rectangle and Square. Use Quadrilateral as the superclass of the hierarchy. You are being
provided with a Point class, use it to represent the points in each shape. For e.g. the private
instance variables of Quadrilateral should be the x-y coordinate pairs for the four endpoints of
the Quadrilateral. Write a program that instantiates objects of your classes and outputs each
object’s area (except Quadrilateral). (10 points)
The Quadrilateral class
import java.awt.*;
public abstract class Quadrilateral
{
public Point topleft = new Point(0,0);
public Point topright = new Point(0,0);
public Point bottomleft = new Point(0,0);
public Point bottomright = new Point(0,0);
public abstract int calculateArea();
}//end of class Quadrilateral
The Rectangle class
?
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
import java.awt.*;
public class MyRect extends Quadrilateral { public MyRect() { super(); }//end of constructor
public MyRect(int x, int y, int width, int height) { //super(); topleft = new Point(x,y); topright = new Point(x+width,y); bottomleft = new Point(x, y+height); bottomright = new Point(x+width, y+height); }//end of constructor
public int calculateArea() { /* * The area of a Rectangle is calculated as follows: * (length * breadth) */ int area = (bottomright.x - topleft.x) * (bottomright.y - topleft.y); return area; }//end of method calculateArea() }//end of class MyRect |
The Square class
?
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
import java.awt.*;
public class Square extends Quadrilateral { public Square() { super(); }//end of constructor
public Square(int x, int y, int side) { super(); topleft = new Point(x,y); topright = new Point(x+side,y); bottomleft = new Point(x, y+side); bottomright = new Point(x+side, y+side); }//end of constructor
public int calculateArea() { /* * The area of a Parallelogram is calculated as follows: * (side*side) */ int area = (bottomright.x - topleft.x) * (bottomright.y - topleft.y); return area; }//end of method calculateArea() }//end of class Square |
The Paralleogram class
?
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
import java.awt.*;
public class Parallelogram extends Quadrilateral { public Parallelogram() { super(); }//end of constructor
public Parallelogram(int x, int y, int width, int height) { super(); topleft = new Point(x,y); topright = new Point(x+width,y); bottomleft = new Point(x, y+height); bottomright = new Point(x+width, y+height); }//end of constructor
public int calculateArea() { /* * The area of a Parallelogram is calculated as follows: * (base * height) */ int area = (bottomright.x - topleft.x) * (bottomright.y - topleft.y); return area; }//end of method calculateArea() }//end of class Parallelogram |
The ShapeGenerator class
?
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
public class ShapeGenerator { public static void main(String args[]) { Quadrilateral shapes[] = { new MyRect(0,0,10,20), new Parallelogram(0,0,10,20), new Square(0,0,10) }; int area=0; for(int i=0;i<shapes.length;i++) { area = shapes[i].calculateArea(); System.out.println("Area of " + shapes[i].getClass() + " : " + area); }//end of for loop }//end of method main() }//end of class ShapeGenerator |