Java数组,int重置为0?

Java数组,int重置为0?,java,arrays,sum,elements,Java,Arrays,Sum,Elements,处理用户输入决定数组大小的项目。之后,用户输入值并接收总和。最后,程序向用户显示每个值占总值的百分比。例如,如果数组大小为4,a[0]=2,a[1]=1,a[2]=1,a[3]=2,它将显示“2,它是总和的33.333%,”1,它是总和的16.666%,”等等。我遇到的问题是,在确定数组和总和之后,我试图找到我得到0的百分比。由于是不同的for循环,总和是否重置为0 import java.util.Scanner; public class CountIntegersPerLine {

处理用户输入决定数组大小的项目。之后,用户输入值并接收总和。最后,程序向用户显示每个值占总值的百分比。例如,如果数组大小为4,a[0]=2,a[1]=1,a[2]=1,a[3]=2,它将显示“2,它是总和的33.333%,”1,它是总和的16.666%,”等等。我遇到的问题是,在确定数组和总和之后,我试图找到我得到0的百分比。由于是不同的for循环,总和是否重置为0

import java.util.Scanner;

public class CountIntegersPerLine
{
    public static void main(String[] args)
    {
        int elements;
        int arraySize;
        int sum = 0;
        int percentage;
        System.out.println("How many numbers will you enter?");
        Scanner keyboard = new Scanner(System.in);
//Length of array is determined by user input
        arraySize = keyboard.nextInt();
        int[] array = new int[arraySize];
        System.out.println("Enter 4 integers, one per line");
        for (elements = 0; elements < arraySize; elements++)
        {
//Gather user input for elements and add the total value with each iteration
    array[elements] = keyboard.nextInt();
    sum = sum + array[elements];
        }
        System.out.println("The sum is " + sum);
    System.out.println("The numbers are:");
    for (elements = 0; elements < arraySize; elements++)
    {
//Display the percent that each value contributes to the total
    percentage = array[elements] / sum;
    System.out.println(array[elements] + ", which is " + percentage + " of the sum.");
    }
        System.out.println();
}
import java.util.Scanner;
公共类CountIntegersPerLine
{
公共静态void main(字符串[]args)
{
int元素;
内部阵列化;
整数和=0;
整数百分比;
System.out.println(“您将输入多少个数字?”);
扫描仪键盘=新扫描仪(System.in);
//数组的长度由用户输入决定
arraySize=keyboard.nextInt();
int[]数组=新的int[arraySize];
System.out.println(“输入4个整数,每行一个”);
对于(元素=0;元素

}当分子小于分母时,整数除法将导致零值。您应该将
百分比
声明为
浮动
双浮动

    int percentage;
    ...
    ...
    ...
    percentage = array[elements] / sum;
您需要在案例中强制转换除法运算以保留值:

percentage = (double)array[elements] / sum;

尝试将
sum
变量声明为
double
(或
float
):

为什么??因为在这一行:

percentage = array[elements] / sum;
。。。您在两个整数之间执行除法,所有小数都将丢失。您可以验证情况是否确实如此,例如,尝试以下方法:

System.out.println(1/3); // it'll print 0 on the console
这个问题的解决方案是通过声明除法的一个操作数的类型(如上所述)或执行强制转换,将其作为十进制数。或者,这将在不更改
总和类型的情况下工作:

percentage = array[elements] / ((double)sum);

1.如何将浮点值存储在整数中?2.读一下整数除法。可能是重复的,现在知道了。非常感谢。
percentage = array[elements] / ((double)sum);