diff --git a/.gitignore b/.gitignore
index 32858aa..d9944c5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,12 +1,5 @@
-*.class
+/bin/
-# Mobile Tools for Java (J2ME)
-.mtj.tmp/
-
-# Package Files #
-*.jar
-*.war
-*.ear
-
-# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
-hs_err_pid*
+/.metadata/
+/.recommenders/
+/RemoteSystemsTempFiles/
diff --git a/ap01/.classpath b/ap01/.classpath
new file mode 100644
index 0000000..fceb480
--- /dev/null
+++ b/ap01/.classpath
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/ap01/.gitignore b/ap01/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/ap01/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/ap01/.project b/ap01/.project
new file mode 100644
index 0000000..33fd3dd
--- /dev/null
+++ b/ap01/.project
@@ -0,0 +1,17 @@
+
+
+ JP
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/ap01/.settings/org.eclipse.jdt.core.prefs b/ap01/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..3a21537
--- /dev/null
+++ b/ap01/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/ap01/Series.java b/ap01/src/Series.java
similarity index 100%
rename from ap01/Series.java
rename to ap01/src/Series.java
diff --git a/ap01/SeriesTest.java b/ap01/src/SeriesTest.java
similarity index 100%
rename from ap01/SeriesTest.java
rename to ap01/src/SeriesTest.java
diff --git a/ap02/.classpath b/ap02/.classpath
new file mode 100644
index 0000000..fceb480
--- /dev/null
+++ b/ap02/.classpath
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/ap02/.gitignore b/ap02/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/ap02/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/ap02/.project b/ap02/.project
new file mode 100644
index 0000000..33fd3dd
--- /dev/null
+++ b/ap02/.project
@@ -0,0 +1,17 @@
+
+
+ JP
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/ap02/.settings/org.eclipse.jdt.core.prefs b/ap02/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..3a21537
--- /dev/null
+++ b/ap02/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/ap02/Drawing.java b/ap02/src/Drawing.java
similarity index 100%
rename from ap02/Drawing.java
rename to ap02/src/Drawing.java
diff --git a/ap02/Mickey.java b/ap02/src/Mickey.java
similarity index 100%
rename from ap02/Mickey.java
rename to ap02/src/Mickey.java
diff --git a/ap02/Moire.java b/ap02/src/Moire.java
similarity index 100%
rename from ap02/Moire.java
rename to ap02/src/Moire.java
diff --git a/ch01/.classpath b/ch01/.classpath
new file mode 100644
index 0000000..fceb480
--- /dev/null
+++ b/ch01/.classpath
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/ch01/.gitignore b/ch01/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/ch01/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/ch01/.project b/ch01/.project
new file mode 100644
index 0000000..33fd3dd
--- /dev/null
+++ b/ch01/.project
@@ -0,0 +1,17 @@
+
+
+ JP
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/ch01/.settings/org.eclipse.jdt.core.prefs b/ch01/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..3a21537
--- /dev/null
+++ b/ch01/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/ch01/Goodbye.java b/ch01/src/Goodbye.java
similarity index 100%
rename from ch01/Goodbye.java
rename to ch01/src/Goodbye.java
diff --git a/ch01/Hello.java b/ch01/src/Hello.java
similarity index 100%
rename from ch01/Hello.java
rename to ch01/src/Hello.java
diff --git a/ch02/.classpath b/ch02/.classpath
new file mode 100644
index 0000000..fceb480
--- /dev/null
+++ b/ch02/.classpath
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/ch02/.gitignore b/ch02/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/ch02/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/ch02/.project b/ch02/.project
new file mode 100644
index 0000000..33fd3dd
--- /dev/null
+++ b/ch02/.project
@@ -0,0 +1,17 @@
+
+
+ JP
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/ch02/.settings/org.eclipse.jdt.core.prefs b/ch02/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..3a21537
--- /dev/null
+++ b/ch02/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/ch02/Variables.java b/ch02/src/Variables.java
similarity index 100%
rename from ch02/Variables.java
rename to ch02/src/Variables.java
diff --git a/ch03/.classpath b/ch03/.classpath
new file mode 100644
index 0000000..fceb480
--- /dev/null
+++ b/ch03/.classpath
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/ch03/.gitignore b/ch03/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/ch03/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/ch03/.project b/ch03/.project
new file mode 100644
index 0000000..33fd3dd
--- /dev/null
+++ b/ch03/.project
@@ -0,0 +1,17 @@
+
+
+ JP
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/ch03/.settings/org.eclipse.jdt.core.prefs b/ch03/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..3a21537
--- /dev/null
+++ b/ch03/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/ch03/Convert.java b/ch03/src/Convert.java
similarity index 100%
rename from ch03/Convert.java
rename to ch03/src/Convert.java
diff --git a/ch03/Echo.java b/ch03/src/Echo.java
similarity index 100%
rename from ch03/Echo.java
rename to ch03/src/Echo.java
diff --git a/ch03/GuessStarter.java b/ch03/src/GuessStarter.java
similarity index 100%
rename from ch03/GuessStarter.java
rename to ch03/src/GuessStarter.java
diff --git a/ch03/Input.java b/ch03/src/Input.java
similarity index 100%
rename from ch03/Input.java
rename to ch03/src/Input.java
diff --git a/ch03/ScannerBug.java b/ch03/src/ScannerBug.java
similarity index 100%
rename from ch03/ScannerBug.java
rename to ch03/src/ScannerBug.java
diff --git a/ch04/.classpath b/ch04/.classpath
new file mode 100644
index 0000000..fceb480
--- /dev/null
+++ b/ch04/.classpath
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/ch04/.gitignore b/ch04/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/ch04/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/ch04/.project b/ch04/.project
new file mode 100644
index 0000000..33fd3dd
--- /dev/null
+++ b/ch04/.project
@@ -0,0 +1,17 @@
+
+
+ JP
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/ch04/.settings/org.eclipse.jdt.core.prefs b/ch04/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..3a21537
--- /dev/null
+++ b/ch04/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/ch04/Exercise.java b/ch04/src/Exercise.java
similarity index 100%
rename from ch04/Exercise.java
rename to ch04/src/Exercise.java
diff --git a/ch04/Methods.java b/ch04/src/Methods.java
similarity index 100%
rename from ch04/Methods.java
rename to ch04/src/Methods.java
diff --git a/ch04/NewLine.java b/ch04/src/NewLine.java
similarity index 100%
rename from ch04/NewLine.java
rename to ch04/src/NewLine.java
diff --git a/ch04/PrintTime.java b/ch04/src/PrintTime.java
similarity index 100%
rename from ch04/PrintTime.java
rename to ch04/src/PrintTime.java
diff --git a/ch04/PrintTwice.java b/ch04/src/PrintTwice.java
similarity index 100%
rename from ch04/PrintTwice.java
rename to ch04/src/PrintTwice.java
diff --git a/ch05/.classpath b/ch05/.classpath
new file mode 100644
index 0000000..fceb480
--- /dev/null
+++ b/ch05/.classpath
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/ch05/.gitignore b/ch05/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/ch05/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/ch05/.project b/ch05/.project
new file mode 100644
index 0000000..33fd3dd
--- /dev/null
+++ b/ch05/.project
@@ -0,0 +1,17 @@
+
+
+ JP
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/ch05/.settings/org.eclipse.jdt.core.prefs b/ch05/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..3a21537
--- /dev/null
+++ b/ch05/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/ch05/Buzz.java b/ch05/src/Buzz.java
similarity index 100%
rename from ch05/Buzz.java
rename to ch05/src/Buzz.java
diff --git a/ch05/Conditional.java b/ch05/src/Conditional.java
similarity index 100%
rename from ch05/Conditional.java
rename to ch05/src/Conditional.java
diff --git a/ch05/Exercise.java b/ch05/src/Exercise.java
similarity index 100%
rename from ch05/Exercise.java
rename to ch05/src/Exercise.java
diff --git a/ch05/src/Exercise5_5.java b/ch05/src/Exercise5_5.java
new file mode 100644
index 0000000..de8f11e
--- /dev/null
+++ b/ch05/src/Exercise5_5.java
@@ -0,0 +1,38 @@
+import java.util.Scanner;
+
+public class Exercise5_5 {
+
+ public static void printLyrics(int n) {
+ if (n == 0) {
+ System.out.println("No bottles of beer on the wall,");
+ System.out.println("no bottles of beer,");
+ System.out.println("ya’ can’t take one down, ya’ can’t pass it around,");
+ System.out.println("cause there are no more bottles of beer on the wall!");
+ } else {
+ System.out.println(n + " bottles of beer on the wall,");
+ System.out.println(n + " bottles of beer");
+ System.out.println("ya’ take one down, ya’ pass it around,");
+ System.out.println((n - 1) + " bottles of beer on the wall.");
+ System.out.println();
+ printLyrics(n - 1);
+ }
+ }
+
+
+ public static void main(String[] args) {
+ scanInput();
+ }
+
+ public static void scanInput() {
+ Scanner in = new Scanner(System.in);
+ System.out.print("Enter a number of Beers: ");
+ if (!in.hasNextInt()) {
+ String word = in.next();
+ System.err.println(word + " is not a number");
+ scanInput();
+ }
+ int x = in.nextInt();
+ printLyrics(x);
+ }
+
+}
diff --git a/ch05/Logarithm.java b/ch05/src/Logarithm.java
similarity index 100%
rename from ch05/Logarithm.java
rename to ch05/src/Logarithm.java
diff --git a/ch05/Recursion.java b/ch05/src/Recursion.java
similarity index 100%
rename from ch05/Recursion.java
rename to ch05/src/Recursion.java
diff --git a/ch06/.classpath b/ch06/.classpath
new file mode 100644
index 0000000..fceb480
--- /dev/null
+++ b/ch06/.classpath
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/ch06/.gitignore b/ch06/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/ch06/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/ch06/.project b/ch06/.project
new file mode 100644
index 0000000..33fd3dd
--- /dev/null
+++ b/ch06/.project
@@ -0,0 +1,17 @@
+
+
+ JP
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/ch06/.settings/org.eclipse.jdt.core.prefs b/ch06/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..3a21537
--- /dev/null
+++ b/ch06/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/ch06/Exercise.java b/ch06/src/Exercise.java
similarity index 100%
rename from ch06/Exercise.java
rename to ch06/src/Exercise.java
diff --git a/ch06/src/Exercise6_7.java b/ch06/src/Exercise6_7.java
new file mode 100644
index 0000000..8f8ad04
--- /dev/null
+++ b/ch06/src/Exercise6_7.java
@@ -0,0 +1,36 @@
+
+public class Exercise6_7 {
+
+ public static void main(String[] args) {
+ int myNum = 100;
+ System.out.println("Odd Sum = " + oddSum(myNum));
+ System.out.println("All Sum = " + allSum(myNum));
+ }
+
+ public static int oddSum(int m) {
+ if (m == 1) {
+ return 0;
+ } else {
+ if (m % 2 == 0) {
+ int recurse = oddSum(m - 1);
+ int result = m + recurse;
+ return result;
+ } else {
+ int recurse = oddSum(m - 1);
+ return recurse;
+ }
+
+ }
+ }
+
+ public static int allSum(int m) {
+ if (m == 1) {
+ return 1;
+ } else {
+ int recurse = allSum(m - 1);
+ int result = m + recurse;
+ return result;
+ }
+ }
+
+}
diff --git a/ch06/src/Exercise6_8.java b/ch06/src/Exercise6_8.java
new file mode 100644
index 0000000..165053e
--- /dev/null
+++ b/ch06/src/Exercise6_8.java
@@ -0,0 +1,25 @@
+
+
+public class Exercise6_8 {
+
+ public static int ack(int m, int n) {
+ if (m == 0) {
+ return (n + 1);
+ } else if ((m > 0) && (n == 0)) {
+ int recurse = ack((m - 1), 1);
+ return recurse;
+ } else if ((m > 0) && (n > 0)) {
+ int temp = ack(m, (n-1));
+ int recurse = ack((m - 1), temp);
+ return recurse;
+ } else {
+ return -1;
+ }
+ }
+
+
+ public static void main(String[] args) {
+ int n = ack(3,2);
+ System.out.println(n);
+ }
+}
diff --git a/ch06/src/Exercise6_9.java b/ch06/src/Exercise6_9.java
new file mode 100644
index 0000000..44962c6
--- /dev/null
+++ b/ch06/src/Exercise6_9.java
@@ -0,0 +1,22 @@
+
+public class Exercise6_9 {
+
+ public static int power(int x, int n) {
+ if (n == 0) {
+ return 1;
+ } else if (n % 2 == 0) {
+ int recurse = power(x, (n / 2));
+ int result = recurse * recurse;
+ return result;
+ } else {
+ int recurse = power(x, (n - 1));
+ int result = x * recurse;
+ return result;
+ }
+ }
+
+ public static void main(String[] args) {
+ int r = power(2, 6);
+ System.out.println(r);
+ }
+}
diff --git a/ch06/src/Exersice6_6.java b/ch06/src/Exersice6_6.java
new file mode 100644
index 0000000..5412398
--- /dev/null
+++ b/ch06/src/Exersice6_6.java
@@ -0,0 +1,18 @@
+
+public class Exersice6_6 {
+
+ public static void main(String[] args) {
+ System.out.println(prod(1, 4));
+ }
+
+ public static int prod(int m, int n) {
+ if (m == n) {
+ return n;
+ } else {
+ int recurse = prod(m, n - 1);
+ int result = n * recurse;
+ return result;
+// return (n * prod(m, n - 1));
+ }
+ }
+}
diff --git a/ch06/Recursive.java b/ch06/src/Recursive.java
similarity index 100%
rename from ch06/Recursive.java
rename to ch06/src/Recursive.java
diff --git a/ch06/Series.java b/ch06/src/Series.java
similarity index 100%
rename from ch06/Series.java
rename to ch06/src/Series.java
diff --git a/ch07/.classpath b/ch07/.classpath
new file mode 100644
index 0000000..fceb480
--- /dev/null
+++ b/ch07/.classpath
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/ch07/.gitignore b/ch07/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/ch07/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/ch07/.project b/ch07/.project
new file mode 100644
index 0000000..33fd3dd
--- /dev/null
+++ b/ch07/.project
@@ -0,0 +1,17 @@
+
+
+ JP
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/ch07/.settings/org.eclipse.jdt.core.prefs b/ch07/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..3a21537
--- /dev/null
+++ b/ch07/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/ch07/Exercise.java b/ch07/src/Exercise.java
similarity index 100%
rename from ch07/Exercise.java
rename to ch07/src/Exercise.java
diff --git a/ch07/src/Exercise7_3.java b/ch07/src/Exercise7_3.java
new file mode 100644
index 0000000..5ef9d3b
--- /dev/null
+++ b/ch07/src/Exercise7_3.java
@@ -0,0 +1,18 @@
+
+public class Exercise7_3 {
+
+ public static int power(int x, int n) {
+ int result = 1;
+ while (n > 0) {
+ result *= x;
+ n--;
+ }
+ return result;
+
+ }
+
+ public static void main(String[] args) {
+ int r = power(2, 6);
+ System.out.println(r);
+ }
+}
diff --git a/ch07/src/Exercise7_4.java b/ch07/src/Exercise7_4.java
new file mode 100644
index 0000000..d08c61c
--- /dev/null
+++ b/ch07/src/Exercise7_4.java
@@ -0,0 +1,19 @@
+
+
+public class Exercise7_4 {
+
+ public static int factorial(int n) {
+ int result = 1;
+ while (n > 0) {
+ result *= n;
+ n--;
+ }
+ return result;
+
+ }
+
+ public static void main(String[] args) {
+ int r = factorial(4);
+ System.out.println(r);
+ }
+}
diff --git a/ch07/Loops.java b/ch07/src/Loops.java
similarity index 100%
rename from ch07/Loops.java
rename to ch07/src/Loops.java
diff --git a/ch07/Tables.java b/ch07/src/Tables.java
similarity index 100%
rename from ch07/Tables.java
rename to ch07/src/Tables.java
diff --git a/ch07/Validate.java b/ch07/src/Validate.java
similarity index 100%
rename from ch07/Validate.java
rename to ch07/src/Validate.java
diff --git a/ch08/.classpath b/ch08/.classpath
new file mode 100644
index 0000000..fceb480
--- /dev/null
+++ b/ch08/.classpath
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/ch08/.gitignore b/ch08/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/ch08/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/ch08/.project b/ch08/.project
new file mode 100644
index 0000000..33fd3dd
--- /dev/null
+++ b/ch08/.project
@@ -0,0 +1,17 @@
+
+
+ JP
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/ch08/.settings/org.eclipse.jdt.core.prefs b/ch08/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..3a21537
--- /dev/null
+++ b/ch08/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/ch08/ArrayExamples.java b/ch08/src/ArrayExamples.java
similarity index 100%
rename from ch08/ArrayExamples.java
rename to ch08/src/ArrayExamples.java
diff --git a/ch08/src/Exercise8_3.java b/ch08/src/Exercise8_3.java
new file mode 100644
index 0000000..c1a915f
--- /dev/null
+++ b/ch08/src/Exercise8_3.java
@@ -0,0 +1,30 @@
+
+public class Exercise8_3 {
+ public static int[] make(int n) {
+ int[] a = new int[n];
+ for (int i = 0; i < n; i++) {
+ a[i] = i + 1;
+ }
+ return a;
+ }
+
+ public static void dub(int[] jub) {
+ for (int i = 0; i < jub.length; i++) {
+ jub[i] *= 2;
+ }
+ }
+
+ public static int mus(int[] zoo) {
+ int fus = 0;
+ for (int i = 0; i < zoo.length; i++) {
+ fus += zoo[i];
+ }
+ return fus;
+ }
+
+ public static void main(String[] args) {
+ int[] bob = make(5);
+ dub(bob);
+ System.out.println(mus(bob));
+ }
+}
diff --git a/ch08/src/Exercise8_5.java b/ch08/src/Exercise8_5.java
new file mode 100644
index 0000000..a3d813c
--- /dev/null
+++ b/ch08/src/Exercise8_5.java
@@ -0,0 +1,46 @@
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+
+public class Exercise8_5 {
+
+ public static void sieve(int limit) {
+
+ int[] nums = new int[limit];
+ for (int i = 0; i < nums.length; i++) {
+ nums[i] = i;
+ }
+ System.out.println(Arrays.toString(nums));
+
+ boolean[] bool = new boolean[limit];
+ for (int i = 2; i < bool.length; i++) {
+ bool[i] = true;
+ }
+
+ // Mark all composite numbers
+ for (int i = 2; i < (bool.length / 2); i++) {
+ if (bool[i]) {
+// bool[i] = false;
+ int multiple = 2;
+ while (i * multiple < bool.length) {
+ bool [i * multiple] = false;
+ multiple++;
+ }
+ }
+ }
+
+
+ Map myMap = new HashMap(bool.length);
+ for (int i = 0; i < nums.length; i++) {
+ myMap.put(nums[i], bool[i]);
+ }
+
+
+ System.out.println(Arrays.toString(bool));
+ System.out.println(myMap);
+ }
+
+ public static void main(String[] args) {
+ sieve(120);
+ }
+}
diff --git a/ch08/Fruit.java b/ch08/src/Fruit.java
similarity index 100%
rename from ch08/Fruit.java
rename to ch08/src/Fruit.java
diff --git a/ch08/Histogram.java b/ch08/src/Histogram.java
similarity index 78%
rename from ch08/Histogram.java
rename to ch08/src/Histogram.java
index 32b029c..681774c 100644
--- a/ch08/Histogram.java
+++ b/ch08/src/Histogram.java
@@ -36,11 +36,20 @@ public static void main(String[] args) {
ArrayExamples.printArray(array);
int[] scores = randomArray(30);
+ ArrayExamples.printArray(scores);
+
int a = inRange(scores, 90, 100);
int b = inRange(scores, 80, 90);
int c = inRange(scores, 70, 80);
int d = inRange(scores, 60, 70);
int f = inRange(scores, 0, 60);
+
+ System.out.println("a= " + a);
+ System.out.println("b= " + b);
+ System.out.println("c= " + c);
+ System.out.println("d= " + d);
+ System.out.println("f= " + f);
+ System.out.println(a + b + c + d + f);
// making a histogram
int[] counts = new int[100];
@@ -48,12 +57,15 @@ public static void main(String[] args) {
int index = scores[i];
counts[index]++;
}
+ ArrayExamples.printArray(counts);
// histogram with enhanced for loop
counts = new int[100];
for (int score : scores) {
counts[score]++;
}
+
+ ArrayExamples.printArray(counts);
}
}
diff --git a/ch08/src/Histogram2.java b/ch08/src/Histogram2.java
new file mode 100644
index 0000000..084825e
--- /dev/null
+++ b/ch08/src/Histogram2.java
@@ -0,0 +1,37 @@
+import java.util.Arrays;
+import java.util.Random;
+
+/**
+ * Example code related to histograms.
+ */
+public class Histogram2 {
+
+ /**
+ * Returns an array of random integers.
+ */
+ public static int[] randomArray(int size) {
+ Random random = new Random();
+ int[] a = new int[size];
+ for (int i = 0; i < a.length; i++) {
+ a[i] = random.nextInt(100);
+ }
+ return a;
+ }
+
+ public static void main(String[] args) {
+
+ int[] scores = randomArray(100);
+
+ // making a histogram
+ int[] counts = new int[100];
+ for (int i = 0; i < scores.length; i++) {
+ int index = scores[i];
+ counts[index]++;
+ }
+
+ System.out.println(Arrays.toString(scores));
+ System.out.println(Arrays.toString(counts));
+
+ }
+
+}
diff --git a/ch08/MakeDubMus.java b/ch08/src/MakeDubMus.java
similarity index 100%
rename from ch08/MakeDubMus.java
rename to ch08/src/MakeDubMus.java
diff --git a/ch09/.classpath b/ch09/.classpath
new file mode 100644
index 0000000..fceb480
--- /dev/null
+++ b/ch09/.classpath
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/ch09/.gitignore b/ch09/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/ch09/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/ch09/.project b/ch09/.project
new file mode 100644
index 0000000..33fd3dd
--- /dev/null
+++ b/ch09/.project
@@ -0,0 +1,17 @@
+
+
+ JP
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/ch09/.settings/org.eclipse.jdt.core.prefs b/ch09/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..3a21537
--- /dev/null
+++ b/ch09/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/ch09/Exercise.java b/ch09/src/Exercise.java
similarity index 100%
rename from ch09/Exercise.java
rename to ch09/src/Exercise.java
diff --git a/ch09/src/Exercise9_1.java b/ch09/src/Exercise9_1.java
new file mode 100644
index 0000000..0a2a6c3
--- /dev/null
+++ b/ch09/src/Exercise9_1.java
@@ -0,0 +1,19 @@
+
+public class Exercise9_1 {
+ public static void main(String[] args) {
+ boolean myB1 = false;
+ char myChar1 = 'm';
+ int myInt1 = 1;
+ double myD1 = 1.0;
+ String myString1 = "MyString1";
+
+ boolean myB2 = true;
+ char myChar2 = 'n';
+ int myInt2 = 2;
+ double myD2 = 2.0;
+ String myString2 = "MyString2";
+
+ System.out.println(myD2 + myInt1);
+ System.out.println((myString1 + myD2).getClass().getName());
+ }
+}
diff --git a/ch09/src/Exercise9_2.java b/ch09/src/Exercise9_2.java
new file mode 100644
index 0000000..1b6ceeb
--- /dev/null
+++ b/ch09/src/Exercise9_2.java
@@ -0,0 +1,41 @@
+import java.util.Arrays;
+
+public class Exercise9_2 {
+
+ public static void letterHist(String lettersCount) {
+
+ String temp = lettersCount.toLowerCase();
+
+ char[] myCharsFromString = temp.toCharArray();
+
+ // creating alfabet array
+ char[] alfabet = new char[25];
+ char c = 'a';
+ for (int i = 0; i < alfabet.length; i++) {
+ alfabet[i] = c;
+ c++;
+ }
+
+ // making a histogram
+ int[] counts = new int[25];
+
+ for (int i = 0; i < myCharsFromString.length; i++) {
+ char index = myCharsFromString[i];
+ for (int j = 0; j < alfabet.length; j++) {
+ if (alfabet[j] == index) {
+ counts[j]++;
+ }
+ }
+
+ }
+
+ System.out.println(Arrays.toString(alfabet));
+ System.out.println(Arrays.toString(counts));
+
+ }
+
+ public static void main(String[] args) {
+ letterHist("My test");
+
+ }
+}
diff --git a/ch09/Format.java b/ch09/src/Format.java
similarity index 100%
rename from ch09/Format.java
rename to ch09/src/Format.java
diff --git a/ch09/Max.java b/ch09/src/Max.java
similarity index 100%
rename from ch09/Max.java
rename to ch09/src/Max.java
diff --git a/ch09/Recurse.java b/ch09/src/Recurse.java
similarity index 100%
rename from ch09/Recurse.java
rename to ch09/src/Recurse.java
diff --git a/ch09/StringsThings.java b/ch09/src/StringsThings.java
similarity index 100%
rename from ch09/StringsThings.java
rename to ch09/src/StringsThings.java
diff --git a/ch10/.classpath b/ch10/.classpath
new file mode 100644
index 0000000..fceb480
--- /dev/null
+++ b/ch10/.classpath
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/ch10/.gitignore b/ch10/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/ch10/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/ch10/.project b/ch10/.project
new file mode 100644
index 0000000..33fd3dd
--- /dev/null
+++ b/ch10/.project
@@ -0,0 +1,17 @@
+
+
+ JP
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/ch10/.settings/org.eclipse.jdt.core.prefs b/ch10/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..3a21537
--- /dev/null
+++ b/ch10/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/ch10/PointRect.java b/ch10/src/PointRect.java
similarity index 100%
rename from ch10/PointRect.java
rename to ch10/src/PointRect.java
diff --git a/ch10/Pow.java b/ch10/src/Pow.java
similarity index 100%
rename from ch10/Pow.java
rename to ch10/src/Pow.java
diff --git a/ch10/Riddle.java b/ch10/src/Riddle.java
similarity index 100%
rename from ch10/Riddle.java
rename to ch10/src/Riddle.java
diff --git a/ch11/.classpath b/ch11/.classpath
new file mode 100644
index 0000000..fceb480
--- /dev/null
+++ b/ch11/.classpath
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/ch11/.gitignore b/ch11/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/ch11/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/ch11/.project b/ch11/.project
new file mode 100644
index 0000000..33fd3dd
--- /dev/null
+++ b/ch11/.project
@@ -0,0 +1,17 @@
+
+
+ JP
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/ch11/.settings/org.eclipse.jdt.core.prefs b/ch11/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..3a21537
--- /dev/null
+++ b/ch11/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/ch11/src/MyMath.java b/ch11/src/MyMath.java
new file mode 100644
index 0000000..271b484
--- /dev/null
+++ b/ch11/src/MyMath.java
@@ -0,0 +1,25 @@
+
+public class MyMath {
+
+ // Nai maluk obsht delitel
+ public static int nod(int a, int b) {
+ while (b != 0) {
+ int t = b;
+ b = a % b;
+ a = t;
+ }
+ return a;
+ }
+
+ // Nai malko obshto kratno
+ public static int nok(int a, int b) {
+ int nod = nod(a, b);
+ int result = a * b;
+ return result / nod;
+ }
+
+ public static void main(String[] args) {
+ System.out.println(nod(1071, 462));
+ System.out.println(nok(1071, 462));
+ }
+}
diff --git a/ch11/Time.java b/ch11/src/Time.java
similarity index 100%
rename from ch11/Time.java
rename to ch11/src/Time.java
diff --git a/ch11/TimeClient.java b/ch11/src/TimeClient.java
similarity index 100%
rename from ch11/TimeClient.java
rename to ch11/src/TimeClient.java
diff --git a/ch12/.classpath b/ch12/.classpath
new file mode 100644
index 0000000..fceb480
--- /dev/null
+++ b/ch12/.classpath
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/ch12/.gitignore b/ch12/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/ch12/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/ch12/.project b/ch12/.project
new file mode 100644
index 0000000..33fd3dd
--- /dev/null
+++ b/ch12/.project
@@ -0,0 +1,17 @@
+
+
+ JP
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/ch12/.settings/org.eclipse.jdt.core.prefs b/ch12/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..3a21537
--- /dev/null
+++ b/ch12/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/ch12/Card.java b/ch12/src/Card.java
similarity index 100%
rename from ch12/Card.java
rename to ch12/src/Card.java
diff --git a/ch12/CardTable.java b/ch12/src/CardTable.java
similarity index 100%
rename from ch12/CardTable.java
rename to ch12/src/CardTable.java
diff --git a/ch12/Search.java b/ch12/src/Search.java
similarity index 100%
rename from ch12/Search.java
rename to ch12/src/Search.java
diff --git a/ch13/.classpath b/ch13/.classpath
new file mode 100644
index 0000000..fceb480
--- /dev/null
+++ b/ch13/.classpath
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/ch13/.gitignore b/ch13/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/ch13/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/ch13/.project b/ch13/.project
new file mode 100644
index 0000000..33fd3dd
--- /dev/null
+++ b/ch13/.project
@@ -0,0 +1,17 @@
+
+
+ JP
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/ch13/.settings/org.eclipse.jdt.core.prefs b/ch13/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..3a21537
--- /dev/null
+++ b/ch13/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/ch13/Card.java b/ch13/Card.java
deleted file mode 120000
index 1c6483e..0000000
--- a/ch13/Card.java
+++ /dev/null
@@ -1 +0,0 @@
-../ch12/Card.java
\ No newline at end of file
diff --git a/ch13/Deck.java b/ch13/src/Deck.java
similarity index 100%
rename from ch13/Deck.java
rename to ch13/src/Deck.java
diff --git a/ch13/Test.java b/ch13/src/Test.java
similarity index 100%
rename from ch13/Test.java
rename to ch13/src/Test.java
diff --git a/ch14/.classpath b/ch14/.classpath
new file mode 100644
index 0000000..fceb480
--- /dev/null
+++ b/ch14/.classpath
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/ch14/.gitignore b/ch14/.gitignore
new file mode 100644
index 0000000..ae3c172
--- /dev/null
+++ b/ch14/.gitignore
@@ -0,0 +1 @@
+/bin/
diff --git a/ch14/.project b/ch14/.project
new file mode 100644
index 0000000..33fd3dd
--- /dev/null
+++ b/ch14/.project
@@ -0,0 +1,17 @@
+
+
+ JP
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/ch14/.settings/org.eclipse.jdt.core.prefs b/ch14/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..3a21537
--- /dev/null
+++ b/ch14/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/ch14/Card.java b/ch14/Card.java
deleted file mode 120000
index 1c6483e..0000000
--- a/ch14/Card.java
+++ /dev/null
@@ -1 +0,0 @@
-../ch12/Card.java
\ No newline at end of file
diff --git a/ch14/CardCollection.java b/ch14/src/CardCollection.java
similarity index 100%
rename from ch14/CardCollection.java
rename to ch14/src/CardCollection.java
diff --git a/ch14/Deck.java b/ch14/src/Deck.java
similarity index 100%
rename from ch14/Deck.java
rename to ch14/src/Deck.java
diff --git a/ch14/Eights.java b/ch14/src/Eights.java
similarity index 100%
rename from ch14/Eights.java
rename to ch14/src/Eights.java
diff --git a/ch14/Hand.java b/ch14/src/Hand.java
similarity index 100%
rename from ch14/Hand.java
rename to ch14/src/Hand.java
diff --git a/ch14/Player.java b/ch14/src/Player.java
similarity index 100%
rename from ch14/Player.java
rename to ch14/src/Player.java
diff --git a/ch14/Test.java b/ch14/src/Test.java
similarity index 100%
rename from ch14/Test.java
rename to ch14/src/Test.java