2013-04-07 10 views
1

Я сделал эту программу, которая является случайным шифром.Random Encoder/Decoper

public class SaadAbdullahCipher { 
     private char[] alphabet = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 
           'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 
           'y', 'z'}; 
    private String alphabetString = "abcdefghijklmnopqrstuvwxyz"; 
    private int[] alphabetASCII = new int[alphabet.length]; 
    private int[] cipherOne; 
    private int[] cipherTwo; 
    private String userMessage; 
    private int randomShiftKey; 
    private Formatter x; 

    public SaadAbdullahCipher(String uM, int rSK) { 
     userMessage = uM; 
     randomShiftKey = rSK; 
     cipherOne = new int[userMessage.length()]; 
    } 

    public void genNewAlphabet() { 
     for(int i = 0; i < alphabet.length; i++) { 
      alphabetASCII[i] = alphabet[i] + randomShiftKey; 
      if(alphabetASCII[i] >= 122) { 
       alphabetASCII[i] = alphabetASCII[i] - 26; 
      } 
     } 
    } 

    public void cipher() {  
     String[] userMessageString = new String[userMessage.length()]; 
     for(int i = 0; i < userMessage.length(); i++) { 
      userMessageString[i] = userMessage.substring(i, i+1); 
     } 

     for(int counterOne = 0; counterOne < userMessageString.length; counterOne++) { 
      cipherOne[counterOne] = alphabetString.indexOf(userMessageString[counterOne]);  
     } 
     cipherTwo = new int[alphabetASCII.length]; 
     System.out.print("Your encoded message is: "); 
     for(int counterTwo = 0; counterTwo < cipherOne.length; counterTwo++) { 
      cipherTwo[counterTwo] = alphabetASCII[cipherOne[counterTwo]]; 
      System.out.print((char)cipherTwo[counterTwo]); 
     } 
    } 

    public void printTextFile() { 
     try { 
      x = new Formatter("Cipher.txt"); 
     } 
     catch(Exception bad) { 
      System.out.println("Your have an air er!"); 
     } 
     for(int i = 0; i < cipherTwo.length; i++) { 
      x.format("%s", (char)cipherTwo[i]); 
     } 
     x.close(); 
    } 

    public int[] getAlphabetASCII() { 
     return alphabetASCII; 
    } 
} 

Main():

public class SaadAbdullahCipherTester { 
    public static void main(String [] args) { 
     Random ranNum = new Random(); 
     Scanner input = new Scanner(System.in); 

     int randomShiftKey = 1 + ranNum.nextInt(24); 

     System.out.print("Please enter your message: "); 
     String userMessage = input.next();  
     System.out.println(); 

     SaadAbdullahCipher test = new SaadAbdullahCipher(userMessage, randomShiftKey); 
     test.genNewAlphabet(); 
     test.cipher(); 
     test.printTextFile(); 

     int[] randomABC = test.getAlphabetASCII(); 

     SaadAbdullahCipherD testTwo = new SaadAbdullahCipherD(randomShiftKey, randomABC); 
     testTwo.openFile(); 
     testTwo.readFile(); 
     testTwo.closeFile(); 
     testTwo.reverseAlphabet(); 
     testTwo.decipher(); 
    } 
} 

Все работает нормально, но когда я печать результат я хочу, чтобы показать все в верхнем регистре (например, HI КАК ВЫ), где бы я добавить. toUpperCase

+0

Это метод 'String' –

ответ

1

Вместо этого кодового блока:

System.out.print("Your encoded message is: "); 
    for(int counterTwo = 0; counterTwo < cipherOne.length; counterTwo++) { 
     cipherTwo[counterTwo] = alphabetASCII[cipherOne[counterTwo]]; 
     System.out.print((char)cipherTwo[counterTwo]); 

Который действительно очень ограничен, вы должны удобст к.т. массив символов в String объекта:

String ciphertext = new String(cipherTwo); 
// Get all the characters into a String object. 
System.out.println("your encoded message is: " + ciphertext.toUpperCase()); 
// Print the output and use the method to make it upper case. 
0

метод toUpperCase() может быть применен только к объекту Струнный для того, чтобы использовать его, вы должны преобразовать массив символов в строке. это можно сделать, построив String из массива char:

String cipherAsStringUpperCase = new String(cipherTwo).toUpperCase();