|
|
@@ -29,6 +29,68 @@ allergens that score 256, 512, 1024, etc.). Your program should
|
|
29
|
29
|
ignore those components of the score. For example, if the allergy
|
|
30
|
30
|
score is 257, your program should only report the eggs (1) allergy.
|
|
31
|
31
|
|
|
|
32
|
+# Java Tips
|
|
|
33
|
+
|
|
|
34
|
+Since this exercise has difficulty 5 it doesn't come with any starter implementation.
|
|
|
35
|
+This is so that you get to practice creating classes and methods which is an important part of programming in Java.
|
|
|
36
|
+It does mean that when you first try to run the tests, they won't compile.
|
|
|
37
|
+They will give you an error similar to:
|
|
|
38
|
+```
|
|
|
39
|
+ path-to-exercism-dir\exercism\java\name-of-exercise\src\test\java\ExerciseClassNameTest.java:14: error: cannot find symbol
|
|
|
40
|
+ ExerciseClassName exerciseClassName = new ExerciseClassName();
|
|
|
41
|
+ ^
|
|
|
42
|
+ symbol: class ExerciseClassName
|
|
|
43
|
+ location: class ExerciseClassNameTest
|
|
|
44
|
+```
|
|
|
45
|
+This error occurs because the test refers to a class that hasn't been created yet (`ExerciseClassName`).
|
|
|
46
|
+To resolve the error you need to add a file matching the class name in the error to the `src/main/java` directory.
|
|
|
47
|
+For example, for the error above you would add a file called `ExerciseClassName.java`.
|
|
|
48
|
+
|
|
|
49
|
+When you try to run the tests again you will get slightly different errors.
|
|
|
50
|
+You might get an error similar to:
|
|
|
51
|
+```
|
|
|
52
|
+ constructor ExerciseClassName in class ExerciseClassName cannot be applied to given types;
|
|
|
53
|
+ ExerciseClassName exerciseClassName = new ExerciseClassName("some argument");
|
|
|
54
|
+ ^
|
|
|
55
|
+ required: no arguments
|
|
|
56
|
+ found: String
|
|
|
57
|
+ reason: actual and formal argument lists differ in length
|
|
|
58
|
+```
|
|
|
59
|
+This error means that you need to add a [constructor](https://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html) to your new class.
|
|
|
60
|
+If you don't add a constructor, Java will add a default one for you.
|
|
|
61
|
+This default constructor takes no arguments.
|
|
|
62
|
+So if the tests expect your class to have a constructor which takes arguments, then you need to create this constructor yourself.
|
|
|
63
|
+In the example above you could add:
|
|
|
64
|
+```
|
|
|
65
|
+ExerciseClassName(String input) {
|
|
|
66
|
+
|
|
|
67
|
+}
|
|
|
68
|
+```
|
|
|
69
|
+That should make the error go away, though you might need to add some more code to your constructor to make the test pass!
|
|
|
70
|
+
|
|
|
71
|
+You might also get an error similar to:
|
|
|
72
|
+```
|
|
|
73
|
+ error: cannot find symbol
|
|
|
74
|
+ assertEquals(expectedOutput, exerciseClassName.someMethod());
|
|
|
75
|
+ ^
|
|
|
76
|
+ symbol: method someMethod()
|
|
|
77
|
+ location: variable exerciseClassName of type ExerciseClassName
|
|
|
78
|
+```
|
|
|
79
|
+This error means that you need to add a method called `someMethod` to your new class.
|
|
|
80
|
+In the example above you would add:
|
|
|
81
|
+```
|
|
|
82
|
+String someMethod() {
|
|
|
83
|
+ return "";
|
|
|
84
|
+}
|
|
|
85
|
+```
|
|
|
86
|
+Make sure the return type matches what the test is expecting.
|
|
|
87
|
+You can find out which return type it should have by looking at the type of object it's being compared to in the tests.
|
|
|
88
|
+Or you could set your method to return some random type (e.g. `void`), and run the tests again.
|
|
|
89
|
+The new error should tell you which type it's expecting.
|
|
|
90
|
+
|
|
|
91
|
+After having resolved these errors you should be ready to start making the tests pass!
|
|
|
92
|
+
|
|
|
93
|
+
|
|
32
|
94
|
# Running the tests
|
|
33
|
95
|
|
|
34
|
96
|
You can run all the tests for an exercise by entering
|