Java - 完成程序的另一步(作业)

时间:2012-07-14 00:18:31

标签: java

我的最后一步涉及获得总和的整数百分比。 所以,如果我输入: 2 1 1 2 输出应该是: 2,这是总和的33.333%。 1,这是总和的16.666%。 1,这是总和的16.666%。 2,这是总和的33.333%。

由于我对数组很新,我非常困惑。我不明白如何获得百分比,因为用户可以输入任意数量的整数。如果它只有2个整数,只说2和2,它们每个都是50%

import java.util.Scanner;
   public class Integers {
   /* program 7-1*/
      public static void main(String[] args) 
      {
         Scanner keyboard = new Scanner(System.in);
         System.out.println("How many numbers will you enter?");
         int size = keyboard.nextInt();
         int[] entry = new int[size];

         System.out.println("Enter " + entry.length + " integers, one per line:");

         int sum = 0;
         for (int index = 0; index < entry.length; index++)
         {
            entry[index] = keyboard.nextInt();
            sum +=  size;
         }

         System.out.println("The sum is " + sum + "." + "\nThe numbers are:" );         
      }
   }

4 个答案:

答案 0 :(得分:2)

现在你已经拥有了所有条目和金额,你几乎就在那里:

  • 您需要另一个循环来一次查看一个条目
  • 要计算百分比,请将条目乘以100.0,然后除以sum。请注意100.0末尾的点零 - 它是故意的
  • 如果您使用的是Java 5或更高版本,则打印数字后跟百分号的非常方便的方法是printf。但请注意,百分号%需要转义

答案 1 :(得分:1)

你得到的答案是错误的?这令人费解。我查看了你的代码,但我没有看到任何除法,百分比计算或输出。

我编译并运行了你的代码。这是我得到的输出。到现在为止还挺好。怎么了?你有什么问题?

"C:\Program Files\Java\jdk1.7.0_02\bin\java" -Didea.launcher.port=7533 "-Didea.launcher.bin.path=C:\Program Files (x86)\JetBrains\IntelliJ IDEA 120.11\bin" com.intellij.rt.execution.application.AppMain cruft.Integers
How many numbers will you enter?

4
Enter 4 integers, one per line:
2
1
1
2
The sum is 16.
The numbers are:

Process finished with exit code 0

编写更多代码。小心记住整数除法不是你想要的;百分比需要加倍。

int x = 1/2;  // x will equal zero.  know why?

你已经计算了总和。你知道,如果你输入十个数字,无论它们的数量是多少或多少,每个数字代表的总和的百分比是数字除以总和。这就是你问的问题吗?

1小时后:

这已经整整一个小时了,您似乎认为撰写评论比实际编写您需要的四行代码更具教育意义。好的,我会咬人 - 这是你的解决方案。我冒着被那些做功课的人所激怒的所有人的愤怒的风险。我想让你看到你甚至不会尝试四行代码是多么荒谬:

import java.util.Scanner;

public class Integers {

    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        System.out.println("How many numbers will you enter?");
        int size = keyboard.nextInt();
        int[] entry = new int[size];
        System.out.println("Enter " + entry.length + " integers, one per line:");
        int sum = 0;
        for (int index = 0; index < entry.length; index++) {
            entry[index] = keyboard.nextInt();
            sum += entry[index];  // this was wrong - I fixed it.
        }
        // This is all you had to do. 
        for (int anEntry : entry) {
            System.out.println(String.format("value: %d %6.2f%%", anEntry, anEntry * 100.0 / sum));
        }
        System.out.println(String.format("total: %d %6.2f%%", sum, 100.0));
    }
}

答案 2 :(得分:0)

由于这不是家庭作业,我不打算给你一个答案,但给你一个你可以想出来实施的方法(并从中学习:-D)

创建两个用户输入长度的数组,第二个用于第二个数组。第一个数组将是您当前拥有的数组。第二个将存储唯一值,计数器将表示该数组中有多少个唯一值。当用户输入一个值时,检查它是否在当前数组中,如果没有将其添加到unique并增加计数器。然后遍历程序结束时执行计算的唯一数组。

- 欢呼声

答案 3 :(得分:0)

如果你有一个由''空格分隔的未知数量的整数,你可以把它们作为一个字符串并使用String.split函数 - 你可以在http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html#split(java.lang.String找到文档 - 这将给你一个尽可能大的数组,其长度存储在数组的长度字段中。