我正在寻找一种将int分成整数的方法。 我的意思是:如果我有一个数字30并且我想将它除以4,我希望输出为8,8,7,7。 Java中有没有办法做到这一点? 提前致谢。
答案 0 :(得分:4)
当然,Java是完整的,因此允许您实现任何算法。
我认为结果数字之间的差异最多只能是一个 - 你没有明确地写这个。
试试这个:
final int input = 30;
final int numberOfPieces = 4;
final int quotient = input / numberOfPieces;
final int remainder = input % numberOfPieces;
int [] results = new int[numberOfPieces];
for( int i = 0; i < numberOfPieces; i++ ) {
results[i] = i < remainder ? quotient + 1 : quotient;
}
此代码首先计算整数商,然后将余数平均分配给第一个&#34;件&#34;。
答案 1 :(得分:1)
由于您不希望对数字进行相等的拆分,您可能会做的是:
将数字除以您想要的部分数量。
Round()结果
添加所需数量的四舍五入的数字&amp;检查总和是否相同,如果没有必要加1或减1。
例如:N = 150,部分= 4
=&GT; 37.5,围绕它(37.5)=&gt; 38
现在,38 * 4 = 152和152-150 = 2因此从数字中减去2,你的答案是38,38,38&amp; 36。
代码:
import java.util.*;
import java.lang.*;
import java.io.*;
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
float number = 30.0f;
float parts = 4.0f;
float val = number / parts;
val = Math.round(val);
if (val * parts == number){
System.out.println("Numbers are:");
for (int i = 0; i < parts; i++)
System.out.println(val);
}
else {
int diff = Math.round((val * parts) - number);
System.out.println("Numbers are:");
for(int i = 0;i < parts - 1; i++)
System.out.println(val);
System.out.println(val - diff);
}
}
}
输出:
Numbers are:
8.0
8.0
8.0
6.0
如果你想在上述情况下平等分享差异,那么只需用以下内容替换else部分:
else {
int diff = Math.round((val * parts) - number);
System.out.println("Numbers are:");
for (int i = 0; i < parts - diff; i++)
System.out.println(val);
for (int i = 0; i < diff; i++)
System.out.println(val - 1);
}
您的输出将是:
Numbers are:
8.0
8.0
7.0
7.0