我的最后一步涉及获得总和的整数百分比。 所以,如果我输入: 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:" );
}
}
答案 0 :(得分:2)
现在你已经拥有了所有条目和金额,你几乎就在那里:
100.0
,然后除以sum
。请注意100.0
末尾的点零 - 它是故意的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找到文档 - 这将给你一个尽可能大的数组,其长度存储在数组的长度字段中。