Spaces:
Running
Running
Write a class SecretAgent, which has the following features: | |
A constructor that takes as parameters a name (string) and a code (string) | |
Get methods getName and getCode. | |
Set method setCode(String code), which sets the code attribute if the given parameter follows the rules (rules below); otherwise, the code is set to "000" | |
A static method static boolean codeOk(String code), which returns true if the code is according to the rules | |
The code 'follows the rules' if it has exactly 3 numbers and no other characters. | |
The first 2 numbers must be zeros. | |
import java.util.Random; | |
public class Test{ | |
public static void main(String[] args){ | |
final Random r = new Random(); | |
System.out.println("Testing the class SecretAgent..."); | |
String[] en = "James Jane John Jill Jim Janet George Sarah Oliver Emma".split(" "); | |
String[] sn = "Bond Pond Smith Johnson Clarke Wilson Taylor Morris".split(" "); | |
String[] k = "500 505 040 00A 00X XYZ X0X 700 777 0X0X 0007 0003 0070".split(" "); | |
for (int test = 1; test <=2; test++) { | |
System.out.println("Test " + test); | |
String name = en[r.nextInt(en.length)] + " " + sn[r.nextInt(sn.length)]; | |
String code = "00" + (r.nextInt(9) + 1); | |
SecretAgent sa = new SecretAgent(name, code); | |
System.out.println("Object created with parameters (" + name + ", " + code + ")"); | |
System.out.println("getName() returns " + sa.getName()); | |
System.out.println("getCode() returns " + sa.getCode()); | |
System.out.println("Attempting to change code to a valid one..."); | |
for (int iteration=1; iteration<= 2; iteration++) { | |
code = "00" + (r.nextInt(9) + 1); | |
System.out.println("Attempting with code " + code); | |
sa.setCode(code); | |
System.out.println("getCode() returns " + sa.getCode()); | |
} | |
System.out.println("Attempting to change code to an invalid one..."); | |
code = k[r.nextInt(k.length)]; | |
System.out.println("Attempting with code " + code); | |
sa.setCode(code); | |
System.out.println("getCode() returns " + sa.getCode()); | |
} | |
System.out.println("Test 3: Calling the static method"); | |
String[] codes = "007 004 003 008 0009 070 00A 600 888".split(" "); | |
for (String code : codes) { | |
System.out.println("Testing code " + code + ", valid: " + SecretAgent.codeOk(code)); | |
} | |
} | |
} | |
//ADD | |
class SecretAgent { | |
private String name; | |
private String code; | |
public SecretAgent(String name, String code) { | |
this.name = name; | |
this.code = code; | |
} | |
public String getName() { | |
return name; | |
} | |
public String getCode() { | |
return code; | |
} | |
public void setCode(String code) { | |
if (codeOk(code)) { | |
this.code = code; | |
} else { | |
this.code = "000"; | |
} | |
} | |
// https://www.geeksforgeeks.org/java-string-matches-method-in-java-with-examples/ | |
// https://stackoverflow.com/questions/28145881/how-does-d-work-in-java | |
public static boolean codeOk(String code) { | |
return code.matches("00\\d"); | |
} | |
} | |
Testing the class SecretAgent... | |
Test 1 | |
Object created with parameters (George Taylor, 005) | |
getName() returns George Taylor | |
getCode() returns 005 | |
Attempting to change code to a valid one... | |
Attempting with code 003 | |
getCode() returns 003 | |
Attempting with code 003 | |
getCode() returns 003 | |
Attempting to change code to an invalid one... | |
Attempting with code 500 | |
getCode() returns 000 | |
Test 2 | |
Object created with parameters (Emma Taylor, 002) | |
getName() returns Emma Taylor | |
getCode() returns 002 | |
Attempting to change code to a valid one... | |
Attempting with code 002 | |
getCode() returns 002 | |
Attempting with code 006 | |
getCode() returns 006 | |
Attempting to change code to an invalid one... | |
Attempting with code 700 | |
getCode() returns 000 | |
Test 3: Calling the static method | |
Testing code 007, valid: true | |
Testing code 004, valid: true | |
Testing code 003, valid: true | |
Testing code 008, valid: true | |
Testing code 0009, valid: false | |
Testing code 070, valid: false | |
Testing code 00A, valid: false | |
Testing code 600, valid: false | |
Testing code 888, valid: false | |