Java 如何将字符串转换为数组整数?

Java 如何将字符串转换为数组整数?,java,android-studio,Java,Android Studio,我正在尝试将字符串转换为数组,然后转换为整数,我使代码在java中成功运行,但在android studio中,我转换的数组没有从字符串中获取数组的最后一个值 String y="abc"; String[] array = y.split(""); int[] x = new int[y.length()]; for (int i=0;i<y.length();i++) { String letter=array[i];

我正在尝试将
字符串
转换为数组,然后转换为
整数
,我使代码在java中成功运行,但在android studio中,我转换的数组没有从字符串中获取数组的最后一个值

   String y="abc";
    String[] array = y.split("");
    int[] x = new int[y.length()];
    for (int i=0;i<y.length();i++)

    {

       String letter=array[i];
        if( letter.equals("a")){x[i]=1;}
        if( letter.equals("b")){x[i]=2;}
        if( letter.equals("c")){x[i]=3;}

        sum =sum + x[i];
    }
String y=“abc”;
字符串[]数组=y.split(“”);
int[]x=新的int[y.长度()];
对于(inti=0;i,您应该在循环外定义“sum”。以保留该值

String y="abc";
String[] array = y.split("");
int[] x = new int[y.length()];
int sum = 0; 

for (int i=0;i<y.length();i++) {
    String letter=array[i];

    if( letter.equals("a")){x[i]=1;}
    if( letter.equals("b")){x[i]=2;}
    if( letter.equals("c")){x[i]=3;}

    sum += x[i];
}
String y=“abc”;
字符串[]数组=y.split(“”);
int[]x=新的int[y.长度()];
整数和=0;

对于(int i=0;i更新

下面的答案基于Android Studio调试器的输出 奇怪的问题

数组将是{”、“a”、“b”、“c”}大小4&因此for循环跳过自y.length()以来的最后一个位置。尝试

int[] x = new int[array.length];

请参阅此问题的答案&&以获取更多参考

通过以下方式解决了Android Studio问题:

string.split(“(?!^)”)

有关完整参考,请参见以下代码:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    String y="abc";
    int sum=0;
    String[] array = y.split("(?!^)");
    int[] x = new int[array.length];
    for (int i=0;i<y.length();i++)
    {
        String letter=array[i];
        if( letter.equals("a")){x[i]=1;}
        if( letter.equals("b")){x[i]=2;}
        if( letter.equals("c")){x[i]=3;}

        sum =sum + x[i];
    }
    System.out.println("value of sum : "+sum+"");
}
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
字符串y=“abc”;
整数和=0;
字符串[]数组=y.split((?!^)”;
int[]x=新的int[array.length];
对于(int i=0;i将代码更改为:

int sum = 0;
String str = "abc";
char letter = ' ';
char[] charArray= str.toCharArray();  //or use str.split (to a string array)

for (int i=0; i < str.length(); i++)
{
    letter = charArray[i];
    if(letter == 'a'){ sum += 1; }
    else if(letter == 'b'){ sum += 2; }
    else if(letter == 'c'){ sum += 3; }
}
int和=0;
String str=“abc”;
字符字符='';
char[]charArray=str.toCharArray();//或使用str.split(到字符串数组)
对于(int i=0;i
这会将字符串拆分为一个,然后将字符与对应的字母进行比较,并根据检查执行计算

检查结果


祝你好运!

你在哪里声明/初始化sum?还有,也许
if(letter.equals(“c”){x[i]=3;}
会以某种方式失败。请看下面的答案。是的,我做了所有这些为什么你要使用int数组?为什么不将
x[i]=1
替换为
sum+=1
?当然,2和3也是如此。所以你有:
if(letter.equals(“a”){sum+=1;}
感谢您的回答,但我在声明方法后已经这样做了,始终无法读取数组中的最后一个值,但相同的代码在ECLICETHANKS中工作正常,同样的问题没有改变((但您给了我如何修复它的想法,非常感谢您数组不会是{”、“a”、“b”、“c”}供参考..它将是{“a”、“b”、“c”})。如果你愿意,请检查此项:我的答案基于Android Studio。在Java中运行代码时与在Android Studio中运行代码时似乎有所不同。奇怪!!!@layth你应该接受此答案。他是对的。实际上数组长度是
4
。!!请看:…!!我告诉过你它在Java中工作正常,但在Android Studio应用程序中不工作,无论如何,我发现sol注意:Java是一种编程语言,而android studio是一种IDE(集成开发环境)。public void start(View v){int sum=0;int sum1=0;EditText name=(EditText)findviewbyd(R.id.editText);TextView结果=(TextView)findViewById(R.id.TextView);字符串y=name.getText().toString();字符串[]数组=y.split(“”);int[]x=new int[y.length];for(int i=0;i在andoid制作应用程序中选中完整代码,您将看到结果