【问题标题】:How can I convert a string with integers to array with integers in java?java - 如何在java中将带有整数的字符串转换为带有整数的数组?
【发布时间】:2013-08-01 05:38:10
【问题描述】:

我想在 Java 中将带有整数的字符串转换为带有整数的数组。 我该怎么做?我有一个带有字符串的数组。每个字符串都是整数。 我想通过单击按钮访问每个字符串。

 String[] INT_ARRAY={

        //0
        "250,125,20,20,20,40,20,20,20,40,20,20,20,2500",

        //1 
        "233,63,28,63,29,63,28,16,28,17,26,63,29,17,26,16....
                     ........

                 }

   public void onClick(View v) {

        counter++;
        String IntString = INT_ARRAY[counter];

                    String[] parts = IntString.split(",");


          final int[] A = new int[parts.length()];

          for(int i=0; i<parts.length(); i++){

            A[i] = Integer.parseInt(parts(i));

                            Toast.makeText(getApplicationContext(),String.valueOf(A[i]), Toast.LENGTH_SHORT).show();

        }

  }

【问题讨论】:

  • 漂亮必须是你拥有的方式,但你必须分割字符串,
  • 为什么不用整数数组?
  • 为什么你的INT_ARRAYString[]

标签: java android arrays string integer


【解决方案1】:

您需要String#spilt() 来拆分字符串,例如:

String[] parts = "aa,bb,cc,dd".split(",");

parts 现在由 {"aa", "bb", "cc", "dd"} 组成。

然后使用增强的for循环遍历每个部分,例如:

for(String part : parts) Log.d("", part);

【讨论】:

    【解决方案2】:

    所以你有一个看起来是整数数组的部分序列化表示。从您的代码中,您显然明白需要使用parseInt() 将整数的字符串表示形式转换为int 原语。这部分看起来不错,但是您需要逻辑来遍历每个字符串中的每个逗号分隔值。您可以使用split() 方法从逗号分隔列表中创建字符串数组。整个解决方案如下所示:

    public void onClick(View v) {
    
        counter++;
        String IntString = INT_ARRAY[counter];
    
        final String[] vals = IntString.split(","); // Here we split the comma-separated string
        final int[] A = new int[vals.length];
    
        for(int i=0; i<vals.length; i++){
            A[i] = Integer.parseInt(vals[i]);
            Toast.makeText(getApplicationContext(),String.valueOf(A[i]), Toast.LENGTH_SHORT).show();
        }
    
    }
    

    【讨论】:

      【解决方案3】:
      private Integer[] splitIntegers(String s){
              Object[] numbersAsString = s.split(",");
              return Arrays.copyOf(numbersAsString, numbersAsString.length, Integer[].class);
      }
      

      调用:

      for(String s: INT_ARRAY){
        Integer[] ints = splitIntegers(s);
      }
      

      【讨论】:

      • 为什么建议使用Object[]
      • 避免 ClassCastException 因为从字符串向下转换为整数。 String 可以是 Object,Object 可以是 Integer,但 String 不能是 Integer(除非经过解析或向下转换 [if that word suffices])
      • 很公平,我认为解析或你有什么更好,但我想它可能无缘无故太冗长......
      • 如果字符串有多余的字符而不是逗号和数字,那么这个解决方案比我的要好。然后修剪+替换+解析是最好的解决方案。 :)
      猜你喜欢
      • 1970-01-01
      • 2014-07-14
      • 1970-01-01
      • 2014-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-22
      • 1970-01-01
      相关资源
      最近更新 更多