java 把整数拆分成数组不能用string
时间: 2023-11-19 12:06:02 浏览: 42
是的,Java中可以使用整型数组来拆分整数,不需要使用字符串。以下是一个示例代码,可以将一个整数拆分为数组:
```java
int num = 12345;
int length = (int) Math.log10(num) + 1; //获取数字的位数
int[] arr = new int[length]; //创建整型数组,长度为数字的位数
for (int i = 0; i < length; i++) {
arr[i] = num % 10; //将数字的每一位存入数组中
num /= 10;
}
//输出数组中的元素
for (int i = length - 1; i >= 0; i--) {
System.out.print(arr[i] + " ");
}
```
输出结果为:5 4 3 2 1
相关问题
用java写一个 把一个数分成四段,把各个段的数放在数组中
以下是一个用Java写的程序,可以将一个数分成四段,并将每个段的数放在数组中:
```java
import java.util.Arrays;
public class DivideNumber {
public static void main(String[] args) {
int number = 123456789; // 要分段的数字
int[] segments = divideNumber(number, 4); // 将数字分成4段
System.out.println(Arrays.toString(segments)); // 输出分段后的数组
}
// 将数字分成n段,返回每个段的数值
public static int[] divideNumber(int number, int n) {
int[] segments = new int[n]; // 存储分段后的数值
int length = String.valueOf(number).length(); // 获取数字的位数
int segmentLength = length / n; // 计算每个段的长度
// 分段
for (int i = 0; i < n; i++) {
int start = i * segmentLength;
int end = (i == n - 1) ? length : (i + 1) * segmentLength;
String segmentString = String.valueOf(number).substring(start, end);
int segment = Integer.parseInt(segmentString);
segments[i] = segment;
}
return segments;
}
}
```
在上面的程序中,我们先定义了一个要分段的数字 `number`,然后调用 `divideNumber` 方法将数字分成了4段,并将每个段的数值存储在了数组 `segments` 中。最后,我们使用 `Arrays.toString` 方法将数组转换为字符串并输出。
`divideNumber` 方法使用了字符串的 `substring` 方法将数字分成了n段,并使用 `parseInt` 方法将每个段转换为整数。最后将每个段的数值存储在了 `segments` 数组中并返回。
注意:如果数字不能被n整除,则最后一段的长度会比其他段的长度要长一些。在上面的程序中,我们使用了三元运算符来判断是否是最后一段,并根据情况计算出该段的结束位置。
java随机分配_java正整数分成n份且每一份数值随机分配
可以使用Java中的Random类和数组来实现这个功能。具体步骤如下:
1. 首先输入要分成的份数n和总数值sum。
2. 定义一个长度为n的整数数组,用于存放每一份的数值。
3. 生成n-1个随机数,每个随机数表示分割点的位置,从小到大排序。
4. 根据分割点和sum值,计算每一份的数值。
5. 将每一份的数值存入数组中并输出。
下面是Java代码实现:
```java
import java.util.*;
public class RandomSplit {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入要分成的份数n:");
int n = scanner.nextInt();
System.out.print("请输入总数值sum:");
int sum = scanner.nextInt();
Random random = new Random();
int[] splitPoints = new int[n-1];
for (int i = 0; i < n-1; i++) {
splitPoints[i] = random.nextInt(sum);
}
Arrays.sort(splitPoints);
int[] values = new int[n];
int start = 0;
for (int i = 0; i < n-1; i++) {
values[i] = splitPoints[i] - start;
start = splitPoints[i];
}
values[n-1] = sum - start;
for (int i = 0; i < n; i++) {
int value = random.nextInt(values[i])+1;
System.out.println("第"+(i+1)+"份的数值是:"+value);
}
}
}
```
其中,random.nextInt(n)表示生成一个0到n-1的随机整数。注意,这里需要加1,因为题目要求每一份的数值是正整数。