Oppure

Loading
17/06/11 19:29
Salve a tutti,

sto studiando java con il libro "Programmazione java - fondamenti"(settima edizione) dei fratelli Deitel.
Sono arrivato a fare gli ultimi esercizi del capitolo 4 , che tratta delle istruzioni di controllo del flusso if, if...else e while, ma non sono riuscito a fare l'esercizio 4.37.
Ecco la traccia

"Un'azienda vuole trasmettere dati sulla linea telefonica ma è preoccupata per il rischio di intercettazioni.
Vi ha chiesto di scrivere un programma che cripti i dati in modo da trasmetterli con maggiore sicurezza.
Tutti i dati sono trasmessi come interi a quattro cifre.La vostra applicazione deve acquisire un intero a quattro cifre immesso dall'utente e criptarlo nella seguente maniera: ogni cifra dev'essere rimpiazzata con il risultato ottenuto sommando 7 alla cifra originale e calcolando il resto della divisione per 10.In seguito si deve scambiare la prima cifra con la terza e la seconda con la quarta.Visualizzate l'intero criptato."

Il mio problema è che non so come scambiare le cifre del numero :d
Qualcuno può darmi una mano postando un esempio di codice che scambi le cifre di un numero a quattro cifre?
grazie ciaooo
17/06/11 21:14
crack001
puoi trasformare il tuo intero in un array d'interi dove ogni posizione dell'array comprende 1 singola cifra del tuo intero, e poi puoi farti un algoritmo per lo scambio, ci sono anche altri modi ma mi sembra il piu semplice da implementare
aaa
18/06/11 8:47
Dovresti prima dividere la "stringa numerica" in 4 caratteri, fare le operazioni, e salvarle con quell'ordine (tutto lo spostamento conviene farlo usando array di caratteri e non operazioni matematiche :))
18/06/11 9:30
:rofl: Conosco gli array , ma non so usarli in java D: .
Ho pensato di fare in questo modo, con le poche conoscenze che ho su java:

import java.util.Scanner;

public class App{
   
   public static void main(String args[]){
       
       Scanner input = new Scanner(System.in);
       
       int numero, numero2, numero3,numero4;
       
       System.out.print("Inserire numero:");
       numero = input.nextInt();
       System.out.print("Inserire numero:");
       numero2 = input.nextInt();
       System.out.print("Inserire numero:");
       numero3 = input.nextInt();
       System.out.print("Inserire numero:");
       numero4 = input.nextInt();
       
       
       numero += 7;
       numero %= 10;
       numero2 += 7;
       numero2 %=10;
       numero3 += 7;
       numero3 %= 10;
       numero4 += 7;
       numero4 %= 10;
    
       
       System.out.printf("%d%d%d%d",numero3,numero4,numero,numero2);
       }
       
}


Ma credo che dia un risultato errato.:heehee:

Come faccio a dividere la "stringa numerica" ?Che poi la dovrei dividere dopo le operazioni della somma e del resto.
23/06/11 16:25
import java.util.Scanner;

public class IntStrOrdina {
	public static String Added(String a, int index) {
		return String.valueOf((Integer.parseInt(a.substring(index, index + 1)) + 7) % 10);
		//a.substring(inizio, fine) prende il pezzo di stringa tra inizio e fine
		//Con Integer.paraseInt(stringa) fa trasformo in numero
		//Faccio i conti
		//Con String.valueOf(intero) torna stringa;
	}
	public static void main(String[] args) {
		Scanner i = new Scanner(System.in);
		String s = i.next(); //Leggi l'intera stringa
		if(s.length() == 4) {
			String t;
			t = Added(s, 2) + Added(s, 3) + Added(s, 0) + Added(s, 1);
			//La ordino (indice 0 = 1° carattere)
			System.out.print(t);
		} else {
			System.out.print("Non è stato inserito un numero di 4 cifre!");
		}
	}
}

Non credo sia il miglior modo ma credo funzioni (l'ho fatto al volo quindi se trovi come migliorarlo fallo pure)