diff --git a/Java/integer-to-roman.java b/Java/integer-to-roman.java
new file mode 100644
index 00000000..066721b1
--- /dev/null
+++ b/Java/integer-to-roman.java
@@ -0,0 +1,60 @@
+public class IntegerToRoman{
+ public static String numberToRoman(int number){//Converts a number into a roman numerial
+ String roman = "";
+ while(number != 0){//checks if the number is not equal to 0, if it is not equal then there is more processing to be done
+ if(number >= 1000){//if the number is larger than 1000, then add an M to the roman string and subtract 1000 from number
+ roman += "M";
+ number -= 1000;
+ }
+ else if(number >= 900){//if the number is larger than 900, then add an CM to the roman string and subtract 900 from number
+ roman += "CM";
+ number -= 900;
+ }
+ else if(number >= 500){//if the number is larger than 500, then add an D to the roman string and subtract 500 from number
+ roman += "D";
+ number -= 500;
+ }
+ else if(number >= 400){//if the number is larger than 400, then add an CD to the roman string and subtract 400 from number
+ roman += "CD";
+ number -= 400;
+ }
+ else if(number >= 100){//if the number is larger than 100, then add an C to the roman string and subtract 100 from number
+ roman += "C";
+ number -= 100;
+ }
+ else if(number >= 90){//if the number is larger than 90, then add an XC to the roman string and subtract 90 from number
+ roman += "XC";
+ number -= 90;
+ }
+ else if(number >= 50){//if the number is larger than 50, then add an L to the roman string and subtract 50 from number
+ roman += "L";
+ number -= 50;
+ }
+ else if(number >= 40){//if the number is larger than 40, then add an XL to the roman string and subtract 40 from number
+ roman += "XL";
+ number -= 40;
+ }
+ else if(number >= 10){//if the number is larger than 10, then add an X to the roman string and subtract 10 from number
+ roman += "X";
+ number -= 10;
+ }
+ else if(number >= 9){//if the number is larger than 9, then add an IX to the roman string and subtract 9 from number
+ roman += "IX";
+ number -= 9;
+ }
+ else if(number >= 5){//if the number is larger than 5, then add an V to the roman string and subtract 5 from number
+ roman += "V";
+ number -= 5;
+ }
+ else if(number >= 4){//if the number is larger than 4, then add an IV to the roman string and subtract 4 from number
+ roman += "IV";
+ number -= 4;
+ }
+ else if(number >= 1){//if the number is larger than 1, then add an I to the roman string and subtract 1 from number
+ roman += "I";
+ number -= 1;
+ }
+ }
+ return roman;
+ }
+}
\ No newline at end of file
diff --git a/Java/roman-to-integer.java b/Java/roman-to-integer.java
new file mode 100644
index 00000000..47c12634
--- /dev/null
+++ b/Java/roman-to-integer.java
@@ -0,0 +1,54 @@
+public class RomanToInteger{
+ public static int GetNum(int num) {//gets the number assoicate with a roman character
+ if (num == 'I' || num == 'i') {
+ return 1;
+ }
+ if (num == 'V' || num == 'v') {
+ return 5;
+ }
+ if (num == 'X' || num == 'x') {
+ return 10;
+ }
+ if (num == 'L' || num == 'l') {
+ return 50;
+ }
+ if (num == 'C' || num == 'c') {
+ return 100;
+ }
+ if (num == 'D' || num == 'd') {
+ return 500;
+ }
+ if (num == 'M' || num == 'm') {
+ return 1000;
+ }
+
+ return -1;
+ }
+
+ public static int romanToNumber(String roman){//Converts a roman numerial into a number
+ int results = 0;
+ for (int i = 0; i < roman.length(); i++) {//iterate through all the characters
+ int cur = GetNum(roman.charAt(i));//Gets the integer of the roman number
+ if (cur == -1) {//checks if the cur num is -1, if it is -1, it means that it is an invalid character
+ return -1;
+ }
+ if (i + 1 < roman.length()) {//checks if the next index is out of bounds
+ int next = GetNum(roman.charAt(i + 1));//gets the next character character
+ if (next == -1) {//checks if the cur num is -1, if it is -1, it means that it is an invalid character
+ return -1;
+ }
+ if (cur >= next) {//compares the current number to the next number
+ results += cur;//if it is bigger, simply add the current number
+ }
+ else {//if the current number is smaller than the next number
+ results += (next - cur);//subtract the next number by the current number
+ i++;//increment the index, since the next number has already been used
+ }
+ }
+ else {//only here to add the last number to the results
+ results += cur;//adds the last character to the results
+ }
+ }
+ return results;//returns the result
+ }
+}
\ No newline at end of file
diff --git a/README.md b/README.md
index 358c2d0d..de525959 100644
--- a/README.md
+++ b/README.md
@@ -247,7 +247,9 @@ Check out ---> [Sample PR](https://github.com/codedecks-in/LeetCode-Solutions/pu
| 168 | [Excel Sheet Column Title](https://leetcode.com/problems/excel-sheet-column-title) | [C++](./C++/Excel-Sheet-Column-Title.cpp) | _O(n)_ | _O(n)_ | Easy | String | |
| 007 | [Reverse Integer](https://leetcode.com/problems/reverse-integer) | [Java](./Java/reverse-integer.java)
[C++](./C++/Reverse-Integer.cpp) | _O(n)_ | _O(n)_ | Easy | Math | |
| 202 | [Happy Number](https://leetcode.com/problems/happy-number) | [Java](./Java/Happy-Number.java) | _O(n^2)_ | _O(n)_ | Easy | Math | |
-| 326 | [Power of Three](https://leetcode.com/problems/power-of-three) | [Java](./Java/Power-of-Three.java) | _O(logn)_ | _O(n)_ | Easy | Math | |
+| 326 | [Power of Three](https://leetcode.com/problems/power-of-three) | [Java](./Java/Power-of-Three.java) | _O(logn)_ | _O(n)_ | Easy | Math | |
+| 12 | [Integer to Roman](https://leetcode.com/problems/integer-to-roman) | [Java](./Java/integer-to-roman.java) | _O(n)_ | _O(1)_ | Medium | Math | |
+| 13 | [Roman to Integer](https://leetcode.com/problems/roman-to-integer) | [Java](./Java/roman-to-integer.java) | _O(n)_ | _O(1)_ | Easy | Math | |