¡Ufff! Creo que por fin me he enterado, aunque el modo de expresarlo es confuso: si para cada unidad de un mismo producto sumas el promedio a una variable de valor inicial 0, entiendo que no hace falta calcularlo, pues el promedio por el número de unidades, es la suma total de precios. Por ejemplo, si un alumno en matemáticas ha obtenido como notas 5, 7 y 8, el promedio es (5 + 7 + 8)/3 = 20/3 = 6'66..., y 20/3 + 20/3 + 20/3 = 20/3 · 3 = 20, que es la suma total, por lo que habría bastado calcular 5 + 7 + 8 = 20 directamente.
El método siguiente imprimirá los datos como en el ejemplo que has dado, pues dar la lista de promedios sin más, no me parece útil.
El código lo he escrito aquí directamente, por lo que debe ser probado para asegurar su corrección.
// Este objeto es de una clase anónima. Es definido fuera de la función, para no
// tener que hacer el objeto en cada llamada al método.
private Comparator<venta> comp = new Comparator<>(){
@Override
public int compare(venta prod1, venta prod2){
return prod1.nombreProducto.compareTo(prod2.nombreProducto);
}
};
public void getPromedioGeneral(venta[] vec){
// Si no hay elementos que imprimir, ésto hará terminar al método.
if(vec.length == 0){ return; }
// Esto ordenará los productos según su nombre.
Arrays.sort(vec, comp);
venta producto = vec[0], producto2;
double promedio = producto.precio, cont = 1d;
int i = 0;
while(++i < vec.length){
producto2 = vec[i];
if(producto.nombreProducto.equals(producto2.nombreProducto)){
promedio += producto2.precio;
++cont;
}
else{
if(cont > 1){ promedio /= cont; }
System.out.println(producto.nombreProducto+": "+promedio);
producto = producto2;
promedio = producto2.precio;
cont = 1d;
}
}
// Como el bucle imprime un producto, cuando aparece otro solamente, faltará el
// último producto registrado en la variable 'producto'.
if(cont > 1){ promedio /= cont; }
System.out.println(producto.nombreProducto+": "+promedio);
}
Y los programadores suelen poner nombres a las clases, con una letra mayúscula inicial, para distinguirlos mejor de los nombres de variables. Si haces programas menos sencillos, sería bueno que tengas esa costumbre.