Computer Science 210
Data Structures
Fall 2018, Siena College
SpellsArrayAssociation BlueJ Project
Click here to download a BlueJ project for SpellsArrayAssociation.
SpellsArrayAssociation Source Code
The Java source code for SpellsArrayAssociation is below. Click on a file name to download it.
/*
* Example SpellsArray: a version of the Spells program that
* uses an array of Associations, which is developed in class
*
* Siena College, CSIS 210, Fall 2017
*/
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
public class SpellsArrayAssociation {
public static void main(String args[]) throws IOException {
final int NUM_SPELLS = 10;
// create an array of the magic spells we know.
// Note: due to the way Java handles arrays and generic types,
// we have to leave off the <String,String> in the construction..
Association<String,String> spells[] = new Association[NUM_SPELLS];
Scanner inFile = new Scanner(new File("spells.txt"));
for (int i = 0; i < NUM_SPELLS; i++) {
String spell = inFile.nextLine().trim();
String action = inFile.nextLine().trim();
spells[i] = new Association<String,String>(spell, action);
//System.out.println(spells[i]);
}
inFile.close();
// we play a little game matching spells to descriptions
// until an invalid spell is specified
Scanner keyboard = new Scanner(System.in);
int spellnum = 0;
while (spellnum >= 0) {
System.out.print("Which spell will you use? ");
String spellName = keyboard.next();
spellnum = -1;
for (int spellIndex = 0; spellIndex < spells.length; spellIndex++) {
if (spellName.equals(spells[spellIndex].getKey())) {
spellnum = spellIndex;
break;
}
}
if (spellnum >= 0) {
System.out.println(spells[spellnum].getValue());
}
else {
System.out.println("Your wand doesn't know that one. It explodes. Bye!");
}
}
}
}
/**
* Associate key/value pairs. keys are immutable.
*
* @author Jim Teresco and the CSIS 210 class, Fall 2017
* Siena College on its birthday.
*
*/
public class Association<K,V>
{
/* instance variables to store our key and our value */
private K key;
private V value;
/* construct a new Association with the given key/value pair */
public Association(K k, V v) {
key = k;
value = v;
}
/* construct a new Association with the given key, no value */
public Association(K k) {
key = k;
value = null;
}
/* set a new value */
public void setValue(V v) {
value = v;
}
/* accessors */
public K getKey() {
return key;
}
public V getValue() {
return value;
}
/* convert contents to a String */
public String toString() {
return "<key: " + key + ", value: " + value + ">";
}
public boolean equals(Object o) {
Association<K,V> other = (Association<K,V>) o;
return other.key.equals(key);
}
}