Avatar billede blueprint Nybegynder
09. august 2003 - 07:45 Der er 11 kommentarer og
1 løsning

Program som kan scramble en tekst streng?

Hej Alle,

Jeg ville blot høre om nogen kunne hjælpe mig med et simpelt program, som på baggrund af bruger input, kunne forvandle(scramble) den indtastede tekst streng baseret på nogle predefineret bostavværdier?

Disse bogstavværdier er alfabetet, blot fra A-Z. Meningen med programmet er, at man foreksempel definerer alle bogstaver som variabler, og herefter tildeler de forskellige enkelte bogstav-variabler et andet bogstav.

Således skal bogstaverne tildeles:

A=Z, B=Y, C=X, D=W, E=V, F=U, G=T, H=S, I=R, J=Q, K=P, L=O, M=N, N=M, O=P, P=K, Q=J, R=I, S=H, T=G, U=F, V=E, W=D, Y=B, Z=A

Så foreksempel bliver navnet Martin, hvis dette indtastes ved en promt eller lignende, lavet om til NZIGRM

Håber det giver meningen? :)
Avatar billede arne_v Ekspert
09. august 2003 - 09:41 #1
public class RevSwap {
    private final static String val = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    public static String convert(String s) {
        StringBuffer sb = new StringBuffer("");
        for(int i = 0; i < s.length(); i++) {
            sb.append(val.charAt(25 - val.indexOf(s.charAt(i))));
        }
        return sb.toString();
    }
    public static void main(String[] args) {
        System.out.println(convert("MARTIN"));
    }
}
Avatar billede arne_v Ekspert
09. august 2003 - 09:47 #2
Eller hvis det skal indlæse:

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class RevSwap {
    private final static String val = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    public static String convert(String s) {
        StringBuffer sb = new StringBuffer("");
        for(int i = 0; i < s.length(); i++) {
            sb.append(val.charAt(25 - val.indexOf(s.charAt(i))));
        }
        return sb.toString();
    }
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("Enter string: ");
        String s = br.readLine();
        System.out.println(convert(s));
    }
}
Avatar billede blueprint Nybegynder
09. august 2003 - 10:32 #3
==> arne_v

Det virker umiddelbart som den løsning jeg leder efter?
Dog får jeg en masse fejloutput, primært `undefined reference to' fejl når jeg kompilerer?
Det skal lige nævnes at jeg kører linux som desktop os..

Skyldes dette eventuelt at jeg mangler nogle komponenter til min Java compiler, eller skyldes det primært at jeg skal kompilere under win istedet?

Takker mange gange..
Avatar billede blueprint Nybegynder
09. august 2003 - 10:39 #4
==> arne_v

Ligegyldigt! Jeg fik løst problemet. Manglede et compiler flag/parameter. (--main=RevSwap)

Mange tak endnu en gang!
Avatar billede blueprint Nybegynder
09. august 2003 - 10:41 #5
==> arne_v

Jeg har lige et spørgsmål?
Er det muligt at udbygge funktionaliteten lidt, således at applikationen ikke er ``case-sensitive"?
Avatar billede blueprint Nybegynder
09. august 2003 - 10:57 #6
==> arne_v

Jeg ønsker ikke at fremstå som en belastende type, men er det muligt at udbygge applikationen yderligere? Eksempelvis gøre det muligt at man kan skrive en sætning ved streng-prompten?
Avatar billede arne_v Ekspert
09. august 2003 - 10:58 #7
Vil du have a->z eller a->Z

?
Avatar billede arne_v Ekspert
09. august 2003 - 10:59 #8
"En sætninge" må betyder mellemrum mellem ord ikke ?

Vil du bare have bevaret mellemrummene ?
Avatar billede blueprint Nybegynder
09. august 2003 - 11:04 #9
==> arne_v

For først at besvare spørgsmålet vedr. a-z eller a-Z, umiddelbart mener jeg, at kunne gøre det muligt både at skrive med store bogstaver såvel som små bogstaver?

Spørgsmålet vedr. en komplet sætning. Korrekt, den skal tage forbehold for mellemrum, så man eventuelt kunne skrive "Hej med dig" ved prompten?

Hvis det er for meget at forlange, så gør det ikke spor du beder mig stoppe? :)
Sætter virkelig pris på din indsat indtil videre!
Avatar billede arne_v Ekspert
09. august 2003 - 11:04 #10
Her er en version som:
  - beholde mellemrum
  - laver a->z
  - laver ikke bogstaver til *

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class RevSwap {
    private final static String uppval = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    private final static String lowval = "abcdefghijklmnopqrstuvwxyz";
    public static String convert(String s) {
        StringBuffer sb = new StringBuffer("");
        for(int i = 0; i < s.length(); i++) {
            if(s.charAt(i) == ' ') {
                sb.append(' ');
            } else if(Character.isUpperCase(s.charAt(i))) {
                sb.append(uppval.charAt(25 - uppval.indexOf(s.charAt(i))));
            } else if(Character.isLowerCase(s.charAt(i))) {
                sb.append(lowval.charAt(25 - lowval.indexOf(s.charAt(i))));
            } else {
                sb.append('*');
            }
        }
        return sb.toString();
    }
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("Enter string: ");
        String s = br.readLine();
        System.out.println(convert(s));
    }
}
Avatar billede arne_v Ekspert
09. august 2003 - 11:05 #11
Enter string: Hej med dig
Svq nvw wrt
Avatar billede blueprint Nybegynder
09. august 2003 - 11:12 #12
==> arne_v

PRAGTFULDT! Jeg takker uendelige gange! :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester