2010-06-20 3 views
2

Via le procédé StarPrint je besoin de faire la fréquence de chaque nombre de population dans l'affichage de tableau dans un histogramme en tant que tel:Faire l'histogramme non graphique des valeurs réseau

1=3*** 
2=4**** 
3=7******* 

et ainsi de suite. Il faut que le nombre d'étoiles peuplées soit égal à la fréquence du nombre apparaissant! En ce moment je reçois le nombre d'astérisques de la longueur du tableau.

public static void main(String[] args) { 

    int matrix[][] = new int[100][2]; 

    for (int row = 0; row < matrix.length; row++) { 
     for (int column = 0; column < matrix[row].length; column++) { 
      matrix[row][column] = (int) (Math.random() * 6 + 1); 
     } 

    } 
    int[] hist1 = frequency(matrix); 

    String star = starPrint(hist1); 
    for (int i = 1; i < hist1.length; i++) { 
     System.out.print(" \n" + hist1[i] + star); 
    } 

} 

public static String starPrint(int[] value) { 

    String star = ""; 
    for (int i = 0; i < value.length; i++) { 

     star += "*"; 
    } 
    return star; 
} 

public static int[] frequency(int[][] matrix) { 

    int[] nums = new int[7]; 

    for (int i = 0; i < matrix.length; i++) { 
     for (int j = 0; j < matrix[i].length; j++) { 
      nums[matrix[i][j]] += 1; 
     } 
    } 
    return nums; 
} 
+0

Quelle est la question? :-) –

+0

J'ai besoin de faire la fréquence de chaque nombre peuplé dans l'affichage du tableau dans un histogramme en tant que tel: 1 = 1 fois * et ainsi de suite. Edit: La mise en forme ne semblera pas me laisser le faire ici mais il faut que le nombre d'étoiles peuplées soit égal à la fréquence du nombre apparaissant! Edité dans la question principale pour plus de clarté. –

+0

Code reformaté; s'il vous plaît revenir si incorrect. – trashgod

Répondre

1

Première chose, les étoiles devraient changer à droite? puis

String star = starPrint(hist1); 

devrait être dans ici

for (int i = 1; i < hist1.length; i++) { 
     System.out.print(" \n" + hist1[i] + star); 
} 

Deuxième méthode starPrint devra changer (sauf si cela est la façon dont la méthode est indiquée dans les devoirs ???) de

public static String starPrint(int[] value) { 

à

public static String starPrint(int value) { 

ce qui signifie que vous aurez besoin de la valeur que vous avez obtenu au hasard et non la longueur du tableau

for (int i = 0; i < value; i++) { 

Non value.length

+0

Cela semble très proche du fonctionnement, mais j'ai essayé cela, mais il essaie d'appliquer un tableau à une valeur int, ce qui ne fonctionne pas. –

+0

Eh bien, ce code ne fonctionne pas pour copier et coller. Depuis que cela a été marqué comme devoirs j'ai donné très près de la réponse aux suggestions. Vous devez changer 'Chaîne star = starPrint (hist1);' à Chaîne star = starPrint (hist1 [i]); 'pour utiliser la nouvelle méthode' starPrint' – phwd

+0

Merci beaucoup. Finalement. J'ai travaillé sur cette chose toute la journée et mon cerveau est frit. Je ne sais pas si ça va vraiment claquer pour moi. Je commence à perdre espoir! 3ème classe de programmation. Je devrais être mieux que ça maintenant, non? –

1

Voici un example en Ada qui peuvent vous guider.

Max_Count : constant Integer := 1_200; 
Bin_Size : constant Integer := 100; 
-- 
type Histogram is array (0 .. Max_Count/Bin_Size - 1) of Integer; 
Graph : Histogram := (others => 0); 
-- 
for J in Graph'Range loop --' 
    TIO.Put(Label(J)); 
    for K in 1 .. (Graph(J) * Plot_Size)/Game_Count loop 
     TIO.Put("*"); 
    end loop; 
    TIO.New_Line; 
end loop; 

Addendum: Notez que starPrint() retourne toujours le même nombre d'étoiles. Chaque fois que vous imprimez la valeur hist1[i], imprimez autant d'étoiles. Addenda: Envisagez de remplacer starPrint(int[] value) par starPrint(int value).

+1

+1 pour votre addenda. int [7] .length est toujours 7. –

0

Avez-vous envisagé d'utiliser un Map<Integer, Integer>? Vous pouvez parcourir le tableau et, pour chaque numéro, vérifier s'il s'agit bien d'une clé pour la carte. Si oui, obtenez la valeur associée et augmentez-la. Si ce n'est pas le cas, mettez le numéro sur la carte, ainsi que le nombre de fois où il s'est produit jusqu'à présent (un).

Ensuite, quand il s'agit d'imprimer l'histogramme, il suffit de parcourir le keySet() de la carte et d'obtenir les valeurs.

+0

Ce sont des devoirs donc je dois aller avec des choses que nous avons déjà apprises. Malheureusement, nous n'avons pas encore appris la carte. –

+0

Je pensais que cela pourrait être le cas. Je recommande qu'après avoir fait vos devoirs, vous regardiez comment vous pourriez accomplir cela avec des cartes. Si votre instructeur ne va pas couvrir les collections de Java ce semestre, apprenez-le vous-même, dès que possible. http://java.sun.com/javase/6/docs/technotes/guides/collections/index.html –

Questions connexes