Я ищу способ разделить int на целые числа. Что я имею в виду: если у меня есть число 30, и я хочу разделить это на 4, я хочу, чтобы результат был 8,8,7,7. Есть ли способ в Java для этого? Спасибо заранее.Разделите int на целые числа
ответ
Несомненно, 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;
}
Этот код сначала вычисляет целое частное, а затем равномерно распределяет остаток до первых «кусков».
Четкое и довольно простое решение. Большое спасибо! Для этого он смотрел по всему Интернету! – user2988879
Поскольку вы не хотите, равный шпагата из числа, что вы можете сделать, это:
Разделить число на сколько-либо части, которые вы хотите.
Round() результат
Сложите закругленными числа, сколько раз когда требуемое & чек, если сумма такой же, если не добавить или вычесть 1, как это необходимо.
Например: N = 150, части 4 =
=> 37.5, вокруг него круглое (37.5) => 38
Теперь, 38 * 4 = 152 и 152-150 = 2 так вычтите 2 из числа и ваш ответ 38, 38, 38 & 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 {
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
Разве пользователь не хотел 8,8,7,7 в этом случае? И почему вы усложняете его, используя float? –
Поплавки для дивизии. И «8,8,7,7» должны быть получены с использованием петли в конце. Я буду обновлять код для этого. –
Java имеет целочисленное деление, которое уже решает часть проблемы. –
- 1. Разделите строку на int
- 2. Разделите переменные на int
- 3. Отрицательные целые числа> Положительные целые числа?
- 4. Разделение ввода на целые числа
- 5. Разбиение строки на целые числа
- 6. Разделите dict на число (int)
- 7. Разделение целого числа на меньшие целые числа
- 8. Целые числа, обозначающие 0?
- 9. Псевдослучайные целые числа
- 10. Статические целые числа
- 11. haxe: целые целые числа для абстрактных Int64
- 12. ifstream случайные целые числа?
- 13. Целые числа в JavaScript
- 14. Целые числа из строк
- 15. Луа - Обнаружение целые числа
- 16. Разделите целочисленный диапазон на почти равные целые диапазоны
- 17. Целые числа и вычисления
- 18. Строка parse, содержащая числа в целые числа
- 19. Отфильтровать целые числа в массиве int и символов
- 20. Как проверить, содержит ли массив целые числа или целые числа
- 21. Самый эффективный способ разбиения числа на целые и десятичные числа
- 22. Как сравнить большие целые числа, хранящиеся в массиве int?
- 23. Целочисленные целые числа
- 24. бесконечные целые числа точности: деление на 2
- 25. Как разбить строку на целые числа?
- 26. функция преобразования float в int (огромные целые числа)
- 27. Целесообразные целые числа, использующие программирование на С
- 28. Программа умножает целые числа на 10
- 29. Преобразование InputStream.read() в числа (не целые числа)
- 30. Python Бесконечные целые числа
Этот вопрос остается неясным , Почему 8,8,7,7, а не 8,8,8,6, например? Я голосую, чтобы закрыть его. В любом случае, если вам нужен намек, вы можете захотеть изучить алгоритмы Genetics *. – Aurasphere
@Aurasphere: Да, это неясно, но очень вероятно, что неявное ограничение состоит в том, что числа отличаются не более чем одним. И нет, генетические алгоритмы не являются лучшим выбором для такой простой проблемы. –
@FrankPuffer, если это проблема, вы правы, никаких генетических алгоритмов. Но я все еще думаю, что этот вопрос нужно отредактировать или закрыть. – Aurasphere