我正在尝试制作一个digits方法来存储在arraylistdigitlist中传入的num的数字。我不是除以10得到模数,而是将整数num转换为字符串,并尝试使用charat存储每个数字。但我必须将其转换回整数以将其存储在arraylist中,并为如何执行该操作而努力。
非常感谢你!
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) {
}
}
3条答案
按热度按时间w46czmvw1#
热释光;博士
使用unicode代码点而不是
char
,作为最佳实践。[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
字符已过时
这个
char
类型已过时,无法表示unicode中定义的一半字符。虽然这种类型适用于严格意义上的阿拉伯数字,但我们应该养成使用代码点整数而不是数字的习惯char
键入值。代码点流
将文本作为代码点编号的最简单方法是调用
String#codePoints
得到一个IntStream
,一股int
基本值。对于数字1
,我们得到了49号码2
代码点50,以此类推0
被分配到代码点48。对于每个
int
表示一个代码点编号,将其转换为指定给该编号的字符String
对象。所以49变成“1”,50变成“2”,依此类推。然后将每个数字作为字符串解析为
int
数字值的值。抛出NumberFormatException
如果字符串不是可解析整数。通过呼叫
.boxed
,我们将每个int
将数字转换为Integer
对象。最后,我们收集
Integer
将每个数字表示为不可修改的List
. 这个Stream#toList
方法在Java16中是新的。对于早期的java,使用.collect( Collectors.toList() )
.下面是一个完整的工作示例类
main
方法。当你跑的时候。
数字=[1,2,3,4,5,6,7,8,9,0]
lsmd5eda2#
这也许对你有帮助-
oxiaedzo3#
我认为您的代码中存在一些问题:
你的初始化方式
digitList
不正确,因为它没有分配给任何变量。你应该:我想你有多余的
index
为你的循环变量,因为它似乎没有得到任何地方使用。你应该把它取下来用它i
.你应该保留你的类变量
private
默认情况下final
如果他们不应该被改变。使用getter和setter访问变量。我修改了你的代码如下:
我用这段代码测试了它,它似乎可以工作: