Ciao a tutti, sto facendo un esercizio nel quale devo prendere 'n' valori da tastiera e mandare in output un grafico a barre composto da asterischi, per essere chiari, se i valori sono:
2,5,4,7 allora l'otput sarà:
*
*
* *
***
***
****
****
Comunque, la mia idea, dopo svariati tentativi, è di avere due classi, una che si chiama fillmatrix dove faccio tutte le operazioni necessarie al riempimeto della matrice di caratteri e alla stampa, e l'altra con il main dove chiedo gli 'n' valori e gestisco i metodi della prima classe per la creazione della matrice.
Il mio problema è che in fillmatrix uso il metodo public void creatematrix per creare la matrice e vorrei usare il metodo fill per riempirla, ma quando nella classe main lo vado ad invocare ho dei problemi dato che gli devo passare la matrice, mentre quest'ultima viene creata in fillmatrix.
Allego il codice che magari si capisce meglio:
CLASSE MAIN
codice:
package graficobarre;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("inserire n: ");
int n = in.nextInt();
int[] vett = new int[n];
for( int i = 0; i<n; i++){
vett[i] = in.nextInt();
}
int max = vett[0];
for( int i = 0; i<n; i++){
if(vett[i] > max) max = vett[i];
}
fillmatrix matrix = new fillmatrix(max, n, 0, 0, max);
matrix.createMatrix();
int pos = 0;
for( int i = 0; i<n; i++){
int val = vett[i];
matrix.setval(val);
matrix.setpos(pos);
matrix.fill();
}
}
}
CLASSE FILLMATRIX:
codice:
package graficobarre;
public class fillmatrix {
private int righe, colonne;
private int pos, val, max;
public fillmatrix( int r, int c, int p, int v, int m){
righe = r;
colonne = c;
pos = p;
val = v;
max = m;
}
public void setmax( int m){
max = m;
}
public void setval( int v){
val = v;
}
public void setpos( int p){
pos = p;
}
public void createMatrix(){
char[][] mat = new char[righe][colonne];
}
public void fill(char[][] mat){
for(int i = max; i>val; i--){
mat[i][pos]='*';
}
}
public void print(char[][] mat){
for( int i = 0; i<righe; i++){
for(int j = 0; j<colonne; j++){
System.out.print(mat[i][j]);
}
}
}
}
Lo so che la classe main non funziona dato che è incompleta, ma questo problema ha completamente bloccato le mie idee su come andare avanti ( in questo modo, lo stesso programma l'ho fatto tutto dentro una classe sola, ma diciamo che non mi piace come stile, per questo vorrei farlo con uno stile di programmazione meno C-like).
Grazie in anticipo per l'aiuto e scusatemi per eventuali errori grossolani o la confusione, ma sto imparando e sono ancora una seja in java :F