1

我的最后一步是获取总和的整数百分比。所以如果我输入: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

4 回答 4

2

现在您已经有了所有条目和总和,您几乎就在那里:

  • 您需要另一个循环来一次遍历一个条目
  • 要计算百分比,请将条目乘以100.0,然后除以sum。请注意末尾的点零100.0- 它是故意存在的
  • 如果您使用的是 Java 5 或更高版本,打印数字后跟百分号的一种非常方便的方法是printf. 但是请注意,百分号%需要转义
于 2012-07-14T00:24:12.987 回答
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));
    }
}
于 2012-07-14T00:25:41.613 回答
0

由于这不是家庭作业,因此我不会给您答案,而是给您一种您可以想出实施的方法(并从中学习:-D)

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

- 干杯

于 2012-07-14T00:23:43.293 回答
0

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

于 2012-07-14T00:46:29.417 回答