将整数的每个数字存储到ArrayList java中
我正在尝试创建一个Digits方法来存储在ArrayList数字列表中传入的num的数字。我不是除以10得到模数,而是将整数num转换成字符串,并尝试使用charAt存储每个数字。但我必须将其转换回整数,以将其存储在ArrayList中,并努力研究如何实现它 多谢各位将整数的每个数字存储到ArrayList java中,java,arraylist,Java,Arraylist,我正在尝试创建一个Digits方法来存储在ArrayList数字列表中传入的num的数字。我不是除以10得到模数,而是将整数num转换成字符串,并尝试使用charAt存储每个数字。但我必须将其转换回整数,以将其存储在ArrayList中,并努力研究如何实现它 多谢各位 class Digits{ ArrayList<Integer>digitList; Digits(int num) { String StringN = Integer.toString(num);
class Digits{
ArrayList<Integer>digitList;
Digits(int num) {
String StringN = Integer.toString(num);
int index = 0;
new ArrayList<Integer>();
for(int i=0;i<StringN.length();i++) {
// convert the charAt(i) to integer here?
digitList.add(index, StringN.charAt(i));
index++;
}
}
}
public class digitListclass {
public static void main(String[] args) {
}
}
类数字{
ArrayListdigitList;
数字(整数){
字符串StringN=Integer.toString(num);
int指数=0;
新的ArrayList();
对于(inti=0;i这可能会对您有所帮助-
import java.util.ArrayList;
import java.util.List;
public class Test {
List<Integer> toList(int num) {
String stringNumber = Integer.toString(num);
List<Integer> result = new ArrayList<Integer>(stringNumber.length());
for(int i = 0; i < stringNumber.length(); i ++) {
result.add(Integer.valueOf(stringNumber.substring(i, i + 1)));
}
return result;
}
public static void main(String[] args) {
System.out.println(new Test().toList(1234567890));
}
}
import java.util.ArrayList;
导入java.util.List;
公开课考试{
列表列表(整数){
字符串stringNumber=Integer.toString(num);
列表结果=新的ArrayList(stringNumber.length());
对于(int i=0;i
我认为您的代码中存在一些问题:
您初始化digitList
的方式不正确,因为它没有分配给任何变量。您应该:
我用这段代码对它进行了测试,它似乎可以工作:
Digits first = new Digits(512);
Digits second = new Digits(1024);
// Prints First Digit: [5, 1, 2]
System.out.println("First Digit: " + first.getDigitList().toString());
// Prints Second Digit: [1, 0, 2, 4]
System.out.println("Second Digit: " + second.getDigitList().toString());
太长,读不下去了
最佳做法是使用Unicode代码点,而不是char
“1234567890”
.codePoints()
.地图(
(int代码点)->Integer.parseInt(Character.toString(代码点))
)
.boxed()
托利斯先生()
[1,2,3,4,5,6,7,8,9,0]
char
过时
char
类型已过时,甚至无法表示Unicode中定义的一半字符。虽然此类型严格适用于,但我们应该养成使用整数而不是char
类型值的习惯
代码点的IntStream
将文本用作代码点编号的最简单方法是调用以获取一个int
基元值流。对于数字1
,我们获得代码点49,对于数字2
代码点50,依此类推,0
被分配给代码点48
对于表示代码点编号的每个int
,将其转换为指定给该编号的字符作为字符串
对象。因此49变为“1”,50变为“2”,依此类推
然后将每个数字作为字符串解析为数字值的int
值。如果字符串不是可解析整数,则抛出一个
通过调用.boxed
,我们将数字的每个int
原语转换为整数
对象
最后,我们将表示每个数字的整数
对象收集到一个不可修改的列表
。该方法在Java 16中是新的。对于早期的Java,请使用.collect(Collectors.toList())
列表数字=
"1234567890"
.codePoints()
.map(代码点->整数.parseInt(Character.toString(代码点)))
.boxed()
.toList();
下面是一个使用main
方法的完整示例类
package work.basil.demo.text;
导入java.util.List;
公共类App2
{
公共静态void main(字符串[]args)
{
列出数字=
"1234567890"
.codePoints()
.map(代码点->整数.parseInt(Character.toString(代码点)))
.boxed()
.toList();
System.out.println(“digits=“+digits”);
}
}
跑步的时候
数字=[1,2,3,4,5,6,7,8,9,0]
“digitList无法解析”试图告诉您什么?我不知道,我是否错误地声明了ArrayList?这可能会对您有所帮助:。您在主方法中创建了一个局部变量。该变量的作用域仅限于该方法。@Selina您没有在任何地方声明digitList
。我编辑了代码!我如何存储字符(I)作为数字列表中的整数
Digits first = new Digits(512);
Digits second = new Digits(1024);
// Prints First Digit: [5, 1, 2]
System.out.println("First Digit: " + first.getDigitList().toString());
// Prints Second Digit: [1, 0, 2, 4]
System.out.println("Second Digit: " + second.getDigitList().toString());