Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    3

    Problema

    Salve a tutti, sono uno studente che sto studiando Java e mi hanno consigliato di chiedere a voi, che siete veramente in gamba.
    Sto provando a fare un esercizio, che consiste nel:
    Scrivere un'applicazione che richiede all'utente la lunghezza del lato di un quadrato e poi visulizza un quadrato vuoto, delle dimensioni specificate, fatto di asterischi.

    Io sono arrivato a questo punto:

    codice:
    Scanner input=new Scanner(System.in);
    			System.out.print("Inserisci il primo lato");
    			lato1=input.nextInt();
    			System.out.print("Inserisci il secondo lato");
    			lato2=input.nextInt();
    			
    			
    			for(int contatore1=1;contatore2==lato1;contatore1++)
    Il problema sta nel fare un quadrato vuoto, potete aiutarmi? Grazie mille

  2. #2
    Beh intanto devi fare un ciclo annidato

    codice:
    for(int i=0, i < lato1; i++)
        for(int j=0; j<lato2; j++)
    Quindi all'interno puoi controllare i vari casi,
    se prima o ultima riga scrivi sempre *
    altrimenti solo per 0 e lato-1

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    3
    Grande, il mio problema però arriva appunto dopo, circa sono arrivato al tuo punto, ma non ho capito come fargli disegnare quello che voglio e sul libro che sto seguendo non trovo nessuna informazione, che riguarda questo caso.

  4. #4
    codice:
    import java.io.IOException;
    
    public class xyz {
    	public static void main(String[] args) throws IOException{
    		int lato1 = System.in.read()-48;
    		int lato2 = System.in.read()-48;
    		
    		for(int i=0; i < lato1; i++){
    			for(int j=0; j<lato2; j++){
    				if((i==0) || (i==lato1-1))
    					System.out.print('*');
    				else
    					if((j==0)||(j==lato2-1))
    						System.out.print('*');
    					else
    						System.out.print(' ');
    			}
    			System.out.println();
    		}
    	}
    		
    }
    Il problema piu grande deriva dall'uso di System.in.read() che non è il massimo, in pratica devi scrivere 2 numeri in fila, che saranno rispettivamente lato1 e lato2 e poi dare invio.

    Conviene avere una classe atta alla lettura finche fai esercizi da console di questo tipo.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    3
    Grazie mille adesso lo devo solo capirlo!

  6. #6
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Yasha
    Il problema piu grande deriva dall'uso di System.in.read() che non è il massimo, in pratica devi scrivere 2 numeri in fila, che saranno rispettivamente lato1 e lato2 e poi dare invio.
    Perché gli fai fare questa cosa orribile?

    Originariamente inviato da Yasha
    Conviene avere una classe atta alla lettura finche fai esercizi da console di questo tipo.
    Perché? La classe Scanner non va più bene?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  7. #7
    Originariamente inviato da Alex'87
    Perché gli fai fare questa cosa orribile?

    Perché? La classe Scanner non va più bene?
    Yes Scanner andava bene, non so perchè mi sono messo in testa che stava usando System.in.read() O_O
    Forse mi sono immedesimato nei miei primi esercizi in java ahahahah

    Cmq a parte l'input (che avevi giustamente fatto con Scanner) credo che l'esercizio, in quanto basico, andasse svolto con il doppio annidamento.

  8. #8
    Originariamente inviato da Yasha
    credo che l'esercizio, in quanto basico, andasse svolto con il doppio annidamento.
    Ma la logica non è propriamente corretta!
    Se lato1 = lato2 non viene stampato un quadrato...continuerà a stampare rettangoli!

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    Invito l'autore a prendere visione del Regolamento interno.

    Il titolo è assolutamente fuori da ogni regola. Se c'è un titolo che assolutamente non va dato alle discussioni, è proprio questo: non dice nulla di nulla del contenuto della discussione, né del problema.

    Il codice, inoltre, va postato all'interno degli appositi tag CODE (punto 6).

    Correggo titolo e posting del codice.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  10. #10
    Originariamente inviato da VincenzoTheBest
    Ma la logica non è propriamente corretta!
    Se lato1 = lato2 non viene stampato un quadrato...continuerà a stampare rettangoli!
    Al massimo poteva aggiungere un controllo, ma se leggi il testo dice chiaramente dagli input...che a casa mia è plurale
    Inoltre il suo esempio portava 2 input, ergo forse voleva dire rettangolo e ha scritto quadrato, piuttosto che sbagliare frase ed esempio

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.