Quellcode durchsuchen

need to refactor rotate

mpierse vor 5 Jahren
Ursprung
Commit
74452401b9
2 geänderte Dateien mit 28 neuen und 6 gelöschten Zeilen
  1. 2
    2
      Crypto/Test/ROT13Test.java
  2. 26
    4
      Crypto/src/ROT13.java

+ 2
- 2
Crypto/Test/ROT13Test.java Datei anzeigen

@@ -14,7 +14,6 @@ public class ROT13Test {
14 14
         // When
15 15
         ROT13 cipher = new ROT13();
16 16
         String actual = cipher.rotate(s1, 'A');
17
-
18 17
         // Then
19 18
         assertTrue(actual.equals(s2));
20 19
     }
@@ -28,6 +27,7 @@ public class ROT13Test {
28 27
         // When
29 28
         ROT13 cipher = new ROT13();
30 29
         String actual = cipher.rotate(s1, 'D');
30
+        System.out.println(actual);
31 31
 
32 32
         // Then
33 33
         assertTrue(actual.equals(s2));
@@ -61,7 +61,7 @@ public class ROT13Test {
61 61
 
62 62
         // When
63 63
         String actual = cipher.encrypt(Q1);
64
-        System.out.println(actual);
64
+        System.out.println(Q1);
65 65
         System.out.println(A1);
66 66
         // Then
67 67
         assertTrue(actual.equals(A1));

+ 26
- 4
Crypto/src/ROT13.java Datei anzeigen

@@ -43,18 +43,40 @@ public class ROT13  {
43 43
 
44 44
     public String decrypt(String text) {
45 45
         String result = "";
46
-        int temp = 0;
47 46
         int rotator = cf-cs;
47
+        boolean isUppercase = false;
48 48
         for(int i=0; i<text.length(); i++){
49
-            temp = (int)text.charAt(i)-rotator;
49
+            isUppercase = Character.isUpperCase(text.charAt(i));
50
+            int temp = Character.toLowerCase(text.charAt(i));
51
+            if (temp<97|temp>122){
52
+            } else if(temp-rotator > 97){
53
+                temp = (int)text.charAt(i)-rotator;
54
+            } else {
55
+                temp = 122 - (96-(temp-rotator));
56
+            }
57
+            if(isUppercase){temp=Character.toUpperCase(temp);}
50 58
             result+= (char)temp;
51 59
         }
52 60
         return result;
53 61
     }
54 62
 
55 63
     public static String rotate(String s, Character c) {
56
-
57
-        return "";
64
+        String result = "";
65
+        int rotator = Character.toLowerCase(c)-'a';
66
+        boolean isUppercase = false;
67
+        for(int i=0; i<s.length(); i++){
68
+            isUppercase = Character.isUpperCase(s.charAt(i));
69
+            int temp = Character.toLowerCase(s.charAt(i));
70
+            if (temp<97|temp>122){
71
+            } else if(temp+rotator < 122){
72
+                temp = s.charAt(i)+rotator;
73
+            } else {
74
+                temp = 96 + ((temp+rotator)-122);
75
+            }
76
+            if(isUppercase){temp=Character.toUpperCase(temp);}
77
+            result+= (char)temp;
78
+        }
79
+        return result;
58 80
     }
59 81
 
60 82
 }