Pour chaque portion, ton angle est dans l'intervalle [0;360] et pour avoir un pourcentage, ça revient à te ramener à l'intervalle [0;100] donc il faut que tu divises l'angle de la portion que tu stockes dans b par 3.6 ou de faire comme ça :
somme1 = 0;
for (int i = 0; i < valeurs.length; i++) {
somme1+=valeurs[i];
}
int a=0,b,pourcentage;
double quotient;for (int i 0; i < valeurs.length; i++) { quotient valeurs[i] / somme1;
b = (int) (quotient * 360);
pourcentage = (int) (quotient * 100);
g.setColor(color[i % color.length]);
g.fillArc(0, 0, 200, 200, a, b);
//à toi de voir où tu veux afficher les pourcentages
Aide toi des formules de trigonométrie si tu souhaites afficher les pourcentages à l'intérieur des portions sachant que :
cos(b) = côté adjacent / hypothénuse
Tu peux prendre comme côté adjacent le début de ta première portion et comme hypothénuse le deuxième segment de chaque portion. Ensuite, calcule les milieux des deux segments qui composent chaque portion et enfin calcule le milieu du segment formé par ces deux milieux que tu viens de calculer et tu tombes en plein milieu de ta portion.