Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 24-11-2011, 17:17   #1
h3unter3h
Senior Member
 
Iscritto dal: Aug 2007
Messaggi: 364
[Java] Aiuto con programma "banale"

Salve ragazzi. Ho iniziato da pochissimo a programmare in java e ho per le mani questo esercizietto che dovrebbe essere banalissimo ma che non riesco a risolvere. Qualcuno mi può dare una mano? Grazie.
Ecco il testo:

Scrivere un programma java che scriva per 100 volte una frase. Ogni frase deve essere numerata e il programma deve commettere otto differenti errori di stampa apparentemente casuali.


Ovviamente mi blocco agli errori di stampa. Non riesco proprio a capire come inserirli
h3unter3h è offline   Rispondi citando il messaggio o parte di esso
Old 24-11-2011, 19:39   #2
Darecon
Senior Member
 
Iscritto dal: Sep 2003
Città: Tradate
Messaggi: 396
Quote:
Originariamente inviato da h3unter3h Guarda i messaggi
Salve ragazzi. Ho iniziato da pochissimo a programmare in java e ho per le mani questo esercizietto che dovrebbe essere banalissimo ma che non riesco a risolvere. Qualcuno mi può dare una mano? Grazie.
Ecco il testo:

Scrivere un programma java che scriva per 100 volte una frase. Ogni frase deve essere numerata e il programma deve commettere otto differenti errori di stampa apparentemente casuali.


Ovviamente mi blocco agli errori di stampa. Non riesco proprio a capire come inserirli
Io inizierei ad estrarre 8 numeri casuali da 0 a 99, non ripetuti, per determinare quale delle 100 righe abbia l'errore. Successivamente (ipotizzo che la frase da scrivere sia in una variabile String) usi il metodo toCharArray in modo da ottenere un array di char rappresentante la stringa stessa.
a questo punto prendi un indice a caso tra 0 e la lunghezza dell'array, estrai l'elemento e modifichi il valore con un char a caso e, se ti serve ancora una stringa per altre elaborazioni, usi il metodo valuesOf().
Detta così è uno schifo, ma a farla ci impieghi 30 secondi..
Se hai bisogno di chiarimenti scrivi pure!
Darecon è offline   Rispondi citando il messaggio o parte di esso
Old 24-11-2011, 19:46   #3
h3unter3h
Senior Member
 
Iscritto dal: Aug 2007
Messaggi: 364
credo di aver capito il tuo suggerimento. appena mi rimetto sul codice ci provo. intanto grazie per l'aiuto
h3unter3h è offline   Rispondi citando il messaggio o parte di esso
Old 24-11-2011, 20:01   #4
Darecon
Senior Member
 
Iscritto dal: Sep 2003
Città: Tradate
Messaggi: 396
Quote:
Originariamente inviato da h3unter3h Guarda i messaggi
credo di aver capito il tuo suggerimento. appena mi rimetto sul codice ci provo. intanto grazie per l'aiuto
Questa è una prova (bruttissima) però va..

Codice:
import java.util.ArrayList;
import java.util.List;


public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String x="Ciao mamma come mi diverto!";
		List<Integer> righe= new ArrayList<Integer>();
		for (int i = 0; i < 8; i++) {
			int rigAGenerataACaso=0;
			if(!righe.contains((rigAGenerataACaso=randomNumber(0,99))))
				righe.add(rigAGenerataACaso);
		}
		char[] charArray = x.toCharArray();
		for(int i=0;i<100;i++){
			char[] copia=charArray.clone();
			if(righe.contains(i)){
				int rand=randomNumber(0,charArray.length);
				copia[rand]=(char)(charArray[rand]+1);
			}
			System.out.println(copia);
		}
	}
	public static int randomNumber(int min, int max) {
        return min + (int)(Math.random() * (max - min));
	}

}
al posto del +1 vedi te come "generare l'errore"!!

Quote:
deve commettere otto differenti errori
Questo non lo fa però, li genera, ma potenzialmente sono uguali, a te migliorare il mio codice e risolvere questo problemino!

Ciao!
Darecon è offline   Rispondi citando il messaggio o parte di esso
Old 24-11-2011, 23:15   #5
sic2
Junior Member
 
Iscritto dal: Nov 2011
Messaggi: 13
ciao!

spero di riuscire a rispondere alla tua domanda.
bene quello che farei io è creare un array di dimensione 8 e tipo Error contenente le sottoclassi che trovi qui: http://docs.oracle.com/javase/1.4.2/...ang/Error.html
inoltre crei una variabile chiamata top di valore 0 che indica il primo elemento nell'array.

dunque ogni volta che vuoi stampare una errore prendi l'elemento all'indice TOP e incrementi top.

quando stampi una errore puoi usare: printstacktrace
sic2 è offline   Rispondi citando il messaggio o parte di esso
Old 25-11-2011, 18:46   #6
h3unter3h
Senior Member
 
Iscritto dal: Aug 2007
Messaggi: 364
Allora dopo ore e ore di elaborazione credo di essere riuscito a concludere qualcosa, prendendo spunto dai vostri suggerimenti. Questo è quello che ho fatto, dalle prove sembra funzionare

Codice:
/* Questo programma visualizza 100 volte la frase "Non devo spammare i miei amici" 
* e inserisce in 8 frasi un errore casuale
*/
import java.io.*;
public class Punizione
{
	public static void main (String[] args)
	{
		// Inizializzo la frase da visualizzare
		String frase = "Non devo spammare i miei amici";
		// Inizializzo il contatore
		int contatore = 0;
		// Creo un array che contenga tutte le 100 frasi
		String[] Lista = new String[100];
		for (;contatore<Lista.length;contatore++)
		{
			Lista[contatore] = frase;
		}

		int j=0;
		int caso=0;
		String[] FrasiErrate = new String[8]; //In questo array andranno 8 frasi già errate
		while (j<8)
		{
			char fraseErrata[] = frase.toCharArray();
			int errore = (int)(Math.random() * fraseErrata.length);
			fraseErrata[errore] = (char)(Math.random());
			FrasiErrate[j] = new String (fraseErrata);
			j++;
		}
		
		// Sostituisco in 8 posizioni a caso le frasi errate create
		j=0;
		int[] estratti = new int[8];
		while (j<8)
		{
			caso = 1 + (int)(Math.random() * 100);
			Lista[caso] = FrasiErrate[j];
			estratti[j] = caso;
			j++;
		}
		
		for (int i=0;i<Lista.length;i++)
		{
			System.out.println (i+1 + "." + Lista[i]);
		}
	}
}
che ve ne pare?
h3unter3h è offline   Rispondi citando il messaggio o parte di esso
Old 26-11-2011, 10:53   #7
Darecon
Senior Member
 
Iscritto dal: Sep 2003
Città: Tradate
Messaggi: 396
Secondo me (per una pura questione di stile) conviene che nel primo for l'inizializzazione della variabile vada nel ciclo, quindi: for (int contatore=0;contatore<Lista.length;contatore++), e nei 2 cicli seguenti secondo me è meglio utilizzare il for, in linea di massima la vedo così: se so quante volte deve essere eseguito il ciclo, metto il for, in modo che il numero di volte sia ben visibile, altrimenti se ci sono condizioni di uscita complesse utilizzo il while!

Per il resto, se funziona, va bene!

Non hai scongiurato però il pericolo che escano 2 errori uguali, e quindi 2 frasi con lo stesso errore: il testo richiedeva che tutte le frasi con errore fossero diverse!
Darecon è offline   Rispondi citando il messaggio o parte di esso
Old 26-11-2011, 12:25   #8
h3unter3h
Senior Member
 
Iscritto dal: Aug 2007
Messaggi: 364
hai ragione.potrei inserire un controllo su ognuno degli 8 errori estratti, ma forse il programma diventerebbe illeggibile...
h3unter3h è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
AMD: l'alternativa al DLSS 5 sarebbe in ...
Canon EOS R8 Mark II: sensore da 24,2 MP...
Alla Napoli Shipping Week 2026 arriva il...
Addio bollo: il Governo cancella la tass...
Speciale Logitech G: mouse PRO X SUPERLI...
Cosa pensano Altman, Amodei, Benioff e H...
Microsoft: evento il 7 ottobre dedicato ...
Scoperti 84 corpi cosmici anomali: cosa ...
Dimensity 9600 Pro contro A20 Pro, il nu...
HillMiles MileCity1 torna a 648,99€: e-b...
Enel Mobile, il debutto è sempre ...
Nuova rimodulazione per il fisso di TIM ...
iPhone 18 Pro e Pro Max, preordini sotto...
Ha craccato 26 giochi: ora Denuvo vuole ...
Xiaomi 18 Pro, il lancio è uffici...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 20:16.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v