Using Java add the specified methods to the letterPuzzle class and add tester co
ID: 3784876 • Letter: U
Question
Using Java add the specified methods to the letterPuzzle class and add tester code to the main method
checkRow
checkColumn
scramble
test code in main
public class LetterPuzzle {
private char [][] puzzle;
private char [] letters;
public static Random rg = new Random();
/**
* Default constructor: creates 4x4 puzzle using first 4
* letters of English alphabet
*/
public LetterPuzzle() {
puzzle = new char[4][4];
letters = new char[4];
for (int x=0; x<letters.length; x++) {
letters = makeRow();
puzzle[x] = letters;
}
scramble();
}
private char[] makeRow()
{
char [] let = new char[4];
for (char c='A'; c<'E'; c++)
let[(int)(c-'A')] = c;
return let;
}
/**
* Represents puzzle as 4x4 matrix with row & column headings
* @return puzzle as matrix String
*/
public String toString() {
String s = "";
for (int x=0; x<puzzle.length; x++) {
for (int y=0; y<puzzle.length; y++)
s = s + " " + puzzle[x][y];
s = s + " ";
}
return s;
}
/******TO BE COMPLETED BY STUDENT*****/
/**
* Checks for duplicates in a row
* @param row is the row to be checked: must be a value 0 .. puzzle.length
* @return false if there are duplicates, true if not
* @throws IllegalArgumentException if row is out of bounds
*/
public boolean checkRow(int row) {
return true;
}
/**
* Checks for duplicates in a column
* @param col is the column to be checked: must be a value 0 .. puzzle.length
* @return false if there are duplicates, true if not
* @throws IllegalArgumentException if row is out of bounds
*/
public boolean checkColumn(int col) {
return false;
}
/**
* Scrambles puzzle so that letters appear in random order
*/
public void scramble() {
// write your code here
}
public static void main (String [] args) {
LetterPuzzle puzz = new LetterPuzzle();
System.out.println(puzz);
// Add code here to test your methods & display results
}
}
Explanation / Answer
import java.util.*;
public class LetterPuzzle {
private char [][] puzzle;
private char [] letters;
public static Random rg = new Random();
/**
* Default constructor: creates 4x4 puzzle using first 4
* letters of English alphabet
*/
public LetterPuzzle() {
puzzle = new char[4][4];
letters = new char[4];
for (int x=0; x<letters.length; x++) {
letters = makeRow();
puzzle[x] = letters;
}
scramble();
}
private char[] makeRow()
{
char [] let = new char[4];
for (char c='A'; c<'E'; c++)
let[(int)(c-'A')] = c;
return let;
}
/**
* Represents puzzle as 4x4 matrix with row & column headings
* @return puzzle as matrix String
*/
public String toString() {
String s = "";
for (int x=0; x<puzzle.length; x++) {
for (int y=0; y<puzzle.length; y++)
s = s + " " + puzzle[x][y];
s = s + " ";
}
return s;
}
/******TO BE COMPLETED BY STUDENT*****/
/**
* Checks for duplicates in a row
* @param row is the row to be checked: must be a value 0 .. puzzle.length
* @return false if there are duplicates, true if not
* @throws IllegalArgumentException if row is out of bounds
*/
public boolean checkRow(int row) {
if(row > puzzle.length) throw new IllegalArgumentException("Invalid index");
else
for(int i=0; i<puzzle.length;i++)
{
for(int j=i+1;j<puzzle.length;j++)
{
if(puzzle[row][i]==puzzle[row][j]) return false;
}
}
return true;
}
/**
* Checks for duplicates in a column
* @param col is the column to be checked: must be a value 0 .. puzzle.length
* @return false if there are duplicates, true if not
* @throws IllegalArgumentException if row is out of bounds
*/
public boolean checkColumn(int col) {
if(col > puzzle.length) throw new IllegalArgumentException("Invalid index");
else
for(int i=0; i<puzzle.length;i++)
{
for(int j=i+1;j<puzzle.length;j++)
{
if(puzzle[i][col]==puzzle[j][col]) return false;
}
}
return true;
}
/**
* Scrambles puzzle so that letters appear in random order
*/
public void scramble() {
int p1,p2;
char t;
for(int i=0;i<puzzle.length; i++)
{
for(int j=0;j<puzzle.length/2;j=j+2)
{
p1=rg.nextInt(4);
p2=rg.nextInt(4);
t=puzzle[i][p1];
puzzle[i][p1]=puzzle[i][p2];
puzzle[i][p2]=t;
}
}
}
public static void main (String [] args) {
LetterPuzzle puzz = new LetterPuzzle();
if(!puzz.checkRow(0)) System.out.println("Row 1 contains duplicate elements");
System.out.println(puzz);
// Add code here to test your methods & display results
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.