Java 数组如何将数字添加到与其值相同的位置?
输入是一个Java 数组如何将数字添加到与其值相同的位置?,java,arrays,location,Java,Arrays,Location,输入是一个字符串“543210”。 代码使用charAt方法提取每个字符,并将它们依次放置在与数字值对应的特定数组位置。 charAt(0)=5表示5应该进入数组位置5。 它似乎不起作用。我甚至尝试了arrayLists public class HugeInteger { private String digits; int[] arrayToStoreTheDigits = new int[6]; public HugeInteger(String digits
字符串“543210”
。
代码使用charAt
方法提取每个字符,并将它们依次放置在与数字值对应的特定数组位置。
charAt(0)=5
表示5应该进入数组位置5
。
它似乎不起作用。我甚至尝试了arrayLists
public class HugeInteger {
private String digits;
int[] arrayToStoreTheDigits = new int[6];
public HugeInteger(String digits) {
this.digits = digits;
add();
}
public void add() {
for (int i = 0; i < 5; i++) {
arrayToStoreTheDigits[digits.charAt(i)] = digits.charAt(i);
System.out.println(digits.charAt(i));
}
}
public String toString() {
return "" + arrayToStoreTheDigits + "/ " + digits.charAt(2);
}
}
package Exercise8_17_HugeIntegers;
public class HugeIntegertester {
// static HugeInteger huge;
public static void main(String[] args) {
HugeInteger huge = new HugeInteger("543210");
System.out.println(huge.toString());
}
}
公共类HugeInteger{
私有字符串数字;
int[]数组存储数字=新int[6];
公共HugeInteger(字符串数字){
这个。数字=数字;
添加();
}
公共无效添加(){
对于(int i=0;i<5;i++){
存储数字的数组[数字.charAt(i)]=数字.charAt(i);
System.out.println(digits.charAt(i));
}
}
公共字符串toString(){
返回“+数组存储数字+”/“+数字。字符(2);
}
}
一揽子练习8_17_HugeIntegers;
公共类HugeIntegertester{
//静态HugeInteger巨大;
公共静态void main(字符串[]args){
HugeInteger巨型=新HugeInteger(“543210”);
System.out.println(巨大的.toString());
}
}
您的问题不清楚,但我怀疑问题出在这里:
arrayToStoreTheDigits[digits.charAt(i)] = digits.charAt(i);
如果digits.charAt(i)
是整数值为53的'5'
,因为这是字符'5'
的UTF-16代码单位。如果您试图提取其作为数字查看时的值,则需要使用Character.digit
。或者,如果您真的只关心0-9,并且确信不会有其他字符,您可以直接减去'0'
因此,您可以这样编写代码:
char c = digits.charAt(i);
arrayToStoreTheDigits[c - '0'] = c;
arrayToStoreTheDigits = new int[digits.length()];
for (int i = 0; i < arrayToStoreTheDigits.length; i++)
{
// TODO: Digit validation
arrayToStoreTheDigits[i] = digits.charAt(i) - '0';
}
请注意,由于此初始化:
int[] arrayToStoreTheDigits = new int[6];
。。。如果您的代码看到'6'
或更大的值,则代码将失败
此外,如果要使用数字中的所有字符,则循环应为:
for (int i = 0; i < digits.length(); i++)
因此,在传入“543210”
之后,您将拥有一个{5,4,3,2,1,0}
数组。这是有用的信息。您的问题不清楚,但我怀疑问题出在这里:
arrayToStoreTheDigits[digits.charAt(i)] = digits.charAt(i);
如果digits.charAt(i)
是整数值为53的'5'
,因为这是字符'5'
的UTF-16代码单位。如果您试图提取其作为数字查看时的值,则需要使用Character.digit
。或者,如果您真的只关心0-9,并且确信不会有其他字符,您可以直接减去'0'
因此,您可以这样编写代码:
char c = digits.charAt(i);
arrayToStoreTheDigits[c - '0'] = c;
arrayToStoreTheDigits = new int[digits.length()];
for (int i = 0; i < arrayToStoreTheDigits.length; i++)
{
// TODO: Digit validation
arrayToStoreTheDigits[i] = digits.charAt(i) - '0';
}
请注意,由于此初始化:
int[] arrayToStoreTheDigits = new int[6];
。。。如果您的代码看到'6'
或更大的值,则代码将失败
此外,如果要使用数字中的所有字符,则循环应为:
for (int i = 0; i < digits.length(); i++)
因此,在传入“543210”
之后,您将拥有一个{5,4,3,2,1,0}
数组。这是有用的信息。循环存在问题:
for (int i = 0; i < 5; i++) { // condition shoule be i < 6
// arrayToStoreTheDigits[digits.charAt(i)] = digits.charAt(i); // convert String to integer
// shoule be
arrayToStoreTheDigits[Integer.parseInt(digits.charAt(i))] = Integer.parseInt(digits.charAt(i));
System.out.println(digits.charAt(i));
}
for(inti=0;i<5;i++){//条件应为i<6
//arrayToStoreTheDigits[digits.charAt(i)]=digits.charAt(i);//将字符串转换为整数
//应该是
数组存储数字[Integer.parseInt(digits.charAt(i))]=Integer.parseInt(digits.charAt(i));
System.out.println(digits.charAt(i));
}
您的循环存在问题:
for (int i = 0; i < 5; i++) { // condition shoule be i < 6
// arrayToStoreTheDigits[digits.charAt(i)] = digits.charAt(i); // convert String to integer
// shoule be
arrayToStoreTheDigits[Integer.parseInt(digits.charAt(i))] = Integer.parseInt(digits.charAt(i));
System.out.println(digits.charAt(i));
}
for(inti=0;i<5;i++){//条件应为i<6
//arrayToStoreTheDigits[digits.charAt(i)]=digits.charAt(i);//将字符串转换为整数
//应该是
数组存储数字[Integer.parseInt(digits.charAt(i))]=Integer.parseInt(digits.charAt(i));
System.out.println(digits.charAt(i));
}
使用ArrayList
不是一个选项?您想写下它似乎不起作用吗?怎么了?我的评论是它不起作用。抱歉,我键入错误。使用ArrayList
不是一个选项?是否要编写它似乎不起作用?怎么了?我的评论是它不起作用。对不起,我打错了。是的,UTF-16代码,这是我一直得到的。我试试这个字符。数字。谢谢。是的,UTF-16代码,这是我一直得到的。我试试这个字符。数字。谢谢,它不起作用。但我理解你的观点,因为我试图实现一个解析器。它不起作用;)。但我理解你的观点,因为我试图实现一个解析器。