Added worm constructors and name checking
This commit is contained in:
@@ -41,7 +41,7 @@
|
|||||||
total
|
total
|
||||||
|
|
||||||
|
|
||||||
### naam
|
### naam - DONE
|
||||||
min 2 letters
|
min 2 letters
|
||||||
1e letter uppercase
|
1e letter uppercase
|
||||||
alleen letters quotes en spaties
|
alleen letters quotes en spaties
|
||||||
|
57
src/IllegalNameException.java
Normal file
57
src/IllegalNameException.java
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
import be.kuleuven.cs.som.annotate.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A class for signalling illegal names for worms
|
||||||
|
*
|
||||||
|
* Each illegal name exception involves the name and the index of the character where the error occurred.
|
||||||
|
*
|
||||||
|
* @version 1.0
|
||||||
|
* @author Arthur Bols / Leen Dereu
|
||||||
|
*/
|
||||||
|
public class IllegalNameException extends RuntimeException {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Variable registering the index of this illegal name exception
|
||||||
|
*/
|
||||||
|
private final int index;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Variable referencing the naem of this illegal name exception
|
||||||
|
*/
|
||||||
|
private final String name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initalize this new illegal name exception with given operands
|
||||||
|
*
|
||||||
|
* @param index
|
||||||
|
* The index of the character where the exception occurred.
|
||||||
|
* @param name
|
||||||
|
* The String where the error occurred.
|
||||||
|
*
|
||||||
|
* @post The index of this new illegal name exception is set to the given index
|
||||||
|
* | new.getIndex() == index
|
||||||
|
*
|
||||||
|
* @post The name of this new illegal name exception is set to the given name
|
||||||
|
* | new.getName() == name
|
||||||
|
*/
|
||||||
|
public IllegalNameException(int index, String name) {
|
||||||
|
this.index = index;
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the index of this illegal name exception.
|
||||||
|
*/
|
||||||
|
@Basic @Immutable
|
||||||
|
public int getIndex() {
|
||||||
|
return this.index;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the name of this illegal name exception.
|
||||||
|
*/
|
||||||
|
@Basic @Immutable
|
||||||
|
public String getName() {
|
||||||
|
return this.name;
|
||||||
|
}
|
||||||
|
}
|
@@ -27,32 +27,43 @@ public class Worm {
|
|||||||
this.orientation = orientation;
|
this.orientation = orientation;
|
||||||
this.radius = radius;
|
this.radius = radius;
|
||||||
this.minRadius = 0.25;
|
this.minRadius = 0.25;
|
||||||
|
|
||||||
|
int validValue = isValidName(name);
|
||||||
|
if (validValue != -1) {
|
||||||
|
throw new IllegalNameException(validValue, name);
|
||||||
|
}
|
||||||
this.name = name;
|
this.name = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Worm(double coordX, double coordY, double orientation, String name, double radius, double minRadius) throws IllegalArgumentException {
|
public Worm(double coordX, double coordY, double orientation, String name, double radius, double minRadius) throws IllegalArgumentException {
|
||||||
|
|
||||||
this.coordX = coordX;
|
this.coordX = coordX;
|
||||||
this.coordY = coordY;
|
this.coordY = coordY;
|
||||||
this.orientation = orientation;
|
this.orientation = orientation;
|
||||||
this.radius = radius;
|
this.radius = radius;
|
||||||
this.minRadius = minRadius;
|
this.minRadius = minRadius;
|
||||||
|
|
||||||
|
int validValue = isValidName(name);
|
||||||
|
if (validValue != -1) {
|
||||||
|
throw new IllegalNameException(validValue, name);
|
||||||
|
}
|
||||||
this.name = name;
|
this.name = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isValidName (String name) {
|
private int isValidName (String name) {
|
||||||
|
|
||||||
if (name.length() < 2 || !Character.isUpperCase(name.charAt(0))) {
|
if (name.length() < 2 || !Character.isUpperCase(name.charAt(0))) {
|
||||||
return false;
|
return 0;
|
||||||
}
|
}
|
||||||
//char allowedCharacters[] = {'\'', '"', ' '};
|
String allowedCharacters = "'\" ";
|
||||||
Set<Character> allowedCharacters[] = new
|
|
||||||
for (int i = 0; i < name.length(); i++) {
|
for (int i = 0; i < name.length(); i++) {
|
||||||
if (!Character.isLetter(name.charAt(i))) {
|
if (!Character.isLetter(name.charAt(i))) {
|
||||||
if (!allowedCharacters.contains() name.charAt(i))
|
if (allowedCharacters.indexOf(name.charAt(i)) == -1) {
|
||||||
|
return i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user