Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

I have an error in the code, I\'m using eclipse. import java.util.Scanner; impor

ID: 3558812 • Letter: I

Question

I have an error in the code, I'm using eclipse.

import java.util.Scanner;
import java.util.Random;
import java.util.Arrays;


       public class java2 {
           public static final int ALPHASIZE = 26;
           public static final char[] Lalpha =
                 { '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'
                 };
           public static final char[] Ualpha =
                 {'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',
                 };
           protected static char[] encryptU = new char[ALPHASIZE];
           protected static int[] decrypt = new int[ALPHASIZE];
           protected static char[] encryptL = new char[ALPHASIZE];

           Random rgenerator = new Random();

           public java2(){
                 int randNum = rgenerator.nextInt(ALPHASIZE);

               

                 for(int i=0; i<ALPHASIZE ; i++)
                 {
               
                     do {
                         randNum = rgenerator.nextInt(26);

                      } while (randNum%26==0 &&Arrays.asList(encryptU).contains(Ualpha[randNum]));     

                     encryptU[i] = Ualpha[randNum];
                     encryptL[i] = Lalpha[randNum];
                     decrypt[i] = randNum;

                 }
           }

           public String encrypt(String secret)
           {
                 System.out.println(Arrays.toString(encryptU));
                     int position = 0;
                 char[] mess = secret.toCharArray();
                 for(int i = 0 ; i<mess.length;i++)
                 {
                     if(Character.isUpperCase(mess[i]))
                     {
                 for(int j = 0; j < encryptU.length; j++) {
                     if(mess[i]==Ualpha[j]) {
                         position = j;
                 }
                 mess[i] = encryptU[position];

                     }

                     }

                     if(Character.isLowerCase(mess[i]))
                     {
                 for(int j = 0; j < encryptU.length; j++) {
                     if(mess[i]==Lalpha[j]) {
                         position = j;
                 }
                 mess[i] = encryptL[position];

                     }

                     }

                 }
                 return new String(mess);
           }

           public String decrypt(String secret)
           {
                 char[] mess = secret.toCharArray();
                 for(int i = 0 ; i<mess.length;i++)
                 {
                     if(Character.isUpperCase(mess[i]))
                             {
                             for(int j = 0; j<ALPHASIZE; j++){
                                 if(mess[i]==encryptU[j]){
                                     mess[i] = Ualpha[j];

                                     }
                                 }
                             }         

                     if(Character.isLowerCase(mess[i]))
                     {                 
                         for(int j = 0; j<ALPHASIZE; j++){
                             if(mess[i]==encryptL[j]){
                                 mess[i] = Lalpha[j];

                                 }
                             }
                         }
                 }

                 return new String(mess);
           }
           }

I bolded where the error occurs, it's } while (randNum%26==0 &&Arrays.asList(encryptU).contains(Ualpha[randNum]));     

it generates this error "The method as List(T[]) in the type Arrays is not applicable for the arguments (char[])" do I need to use a different method to make sure the letters aren't repeated?

Explanation / Answer

You should really consider using a Map to store character/encoding pairs. Oh, and to create these random pairs you can add your characters to a List and make use of Collections.shuffleinstead of reinventing the wheel yourself.

Let me demonstrate using only Lalpha (only lowercase letters). You want something along these lines:

Now lets say we wanted to encode / decode the string helloworld, we would do this:

Output (one of many possible):

vjwwmtmcwz
helloworld

Of course, you can incorporate uppercase letters and what-not using the same idea.

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote