在jgrasp中编译时出错

时间:2015-04-18 00:57:27

标签: java arrays for-loop arraylist

import java.util.Scanner;

public class arrayMethSumPer
{
   public static void main(String[] args)
   {
       int x,sum,copysum;
       Scanner keyboard = new Scanner(System.in);
       System.out.println("enter how many integers you want to enter");
       x = keyboard.nextInt();
       int[] plan=new int [x];
       System.out.println("You said you wanted to enter "+x+" integers, you may now proceed with entering them.");


       for(int i=0;i<x;i++){
           plan[i] = keyboard.nextInt();
           sum=plan[i]+plan[i];
           float[] percentage=(plan[i]*100/sum);
           if(i==x-1)
               System.out.println("your first integer is "+percentage[0]+" percent of the sum");
       }
   }
}

我正在尝试编译这个但是在行:

float[] percentage=(plan[i]*100/sum);

显示错误

  

arrayMethSumPer.java:18:错误:不兼容的类型:int无法转换为float []。

我明白这意味着什么,但这些类型之间的分歧是不相容的?

有人可以帮助我正确打印出每个值的总和百分比吗?

我可以做的另一件事是使用(float)()或(int)()

来强制转换它

3 个答案:

答案 0 :(得分:0)

您绝对可以将intfloats分开,但是,您不能通过数组来划分数字。您在错误消息中看到的[]是密钥。你正在进行整数除法,但是你说预期的变量是float[]

如果您打算将此值放在数组中的特定索引,您可以这样做:

percentage[i] = (plan[i] * 100) / sum;

但是,看起来你没有先前创建过的数组。如果您只是想要声明一个新变量,那么您可以使用 WITHOUT 括号,这样它就是常规的float变量:

float = plan[i] * 100 / sum;

这将编译。如果你确实想要将它们存储在一个数组中,请确保你将这个数组声明为 BEFORE

int[] list = new int[x];
double[] percentages = new double[x];

答案 1 :(得分:0)

float[] percentage=(plan[i]*100/sum);语句中,您尝试将一个int值赋给float数组。这是不可能做到的。 您必须根据您的要求将plan[i]*100/sum的值分配给intfloat。 e.g。

int x = plan[i]*100/sum; // int/int -> int

但是我想你想在这里得到小数值,所以它应该是

percentage[/*desired index*/] = (float) (plan[i] * 100) / sum;

除了这些之外,在for循环中,您将在每次迭代中创建数组。那真是太糟糕了。我认为你应该有像

这样的东西
float[] percentage= new float[x];
for(int i=0;i<x;i++){
    plan[i] = keyboard.nextInt();
    sum = plan[i]+plan[i];
    percentage[x] = (float)(plan[i]*100/sum);
    if(i == x-1)
         System.out.println("your first integer is "+percentage[0]+" percent of the sum");
}

答案 2 :(得分:-1)

这是打印每个值的百分比的方法。

import java.util.Scanner;
public class PercentCalc{

  public static void main(String[] args){

    Scanner keyboard = new Scanner(System.in);
    System.out.print("How many numbers would you like to enter? :\n");
    int x = keyboard.nextInt();
    int[] list = new int[x];
    double [] percentValue = new double[x];

    int sum = 0;

    for(int i =0; i<list.length; i++){
      int num = i+1;
      System.out.print("Please enter #" + num + ": ");
      list[i] = keyboard.nextInt();
      sum = list[i] + sum;
    }

    for(int i =0; i<list.length; i++){
      percentValue[i] = ((double)list[i] / sum)*100.0;
      System.out.printf("%d is %1.2f percent of the sum.\n", list[i], percentValue[i]);
    }
  }
}