Added worm constructors and name checking

This commit is contained in:
2018-02-26 17:27:02 +01:00
parent a26b768b94
commit 3d2e56e093
3 changed files with 77 additions and 9 deletions

View File

@@ -41,7 +41,7 @@
total
### naam
### naam - DONE
min 2 letters
1e letter uppercase
alleen letters quotes en spaties

View 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;
}
}

View File

@@ -27,32 +27,43 @@ public class Worm {
this.orientation = orientation;
this.radius = radius;
this.minRadius = 0.25;
int validValue = isValidName(name);
if (validValue != -1) {
throw new IllegalNameException(validValue, name);
}
this.name = name;
}
public Worm(double coordX, double coordY, double orientation, String name, double radius, double minRadius) throws IllegalArgumentException {
this.coordX = coordX;
this.coordY = coordY;
this.orientation = orientation;
this.radius = radius;
this.minRadius = minRadius;
int validValue = isValidName(name);
if (validValue != -1) {
throw new IllegalNameException(validValue, name);
}
this.name = name;
}
private boolean isValidName (String name) {
private int isValidName (String name) {
if (name.length() < 2 || !Character.isUpperCase(name.charAt(0))) {
return false;
return 0;
}
//char allowedCharacters[] = {'\'', '"', ' '};
Set<Character> allowedCharacters[] = new
String allowedCharacters = "'\" ";
for (int i = 0; i < name.length(); i++) {
if (!Character.isLetter(name.charAt(i))) {
if (!allowedCharacters.contains() name.charAt(i))
if (allowedCharacters.indexOf(name.charAt(i)) == -1) {
return i;
}
}
}
return false;
return -1;
}
}