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