【问题标题】:Is there an easy way to convert string of ints to individual ints有没有一种简单的方法可以将整数字符串转换为单个整数
【发布时间】:2015-05-29 04:11:24
【问题描述】:

我可以做到:

int foo = Integer.parseInt("123");

这样int foo = 123

鉴于:

String numbers = "1 2 3"; //note the separation by a space if that helps

int first=
int second=
int third=

是否有一种简单的方法来编写上述内容,以便每个 int 第一、第二和第三个对应于其适当的位置?

【问题讨论】:

  • 输入是空格分隔的吗?
  • 如果它们被空格分隔,请在结果元素上调用split()parseInt
  • 是的,它们被空格分隔,我忘了补充说它们也可以是 2 位数字,并且需要评估每个单独的数字

标签: java string int


【解决方案1】:

使用split 方法获取输入并将其转换为字符串数组,遍历该字符串数组并将每个字符串转换为char 数组。请看下面的代码

String str = "12 3 1 265";
    String[] strArray = str.split(" ");

    for(String s : strArray){
      char[] charArray = s.toCharArray();
      for(char c : charArray){
         // your logic to parse and store
          System.out.println(c);
      }
 }

希望对你有帮助

【讨论】:

  • @30iT 想要将其更改为整数。此外,您应该将 str.toCharArray() 放在 for 循环中。
  • 谢谢你,如果可以的话,我会投票,仍然有点害羞:D 但谢谢
  • @30iT 接受这个作为答案,因为它解决了您的问题
【解决方案2】:

如果不是用空格隔开,另一种解决方案:

String numbers = "123";
int foo = Integer.parseInt(numbers);
int[] nums = new int[numbers.length()];
int i=0;
  while (foo > 0) {
   nums[i] = foo % 10;
   number = foo / 10;
   i++
  }

如果用空格分隔,则使用非数字字符分割并转换为数字。

    String numbers = "1 2 3";
    String s[] =numbers.split("\\D+");
    int[] nums = new int[s.length];
       for(int i = 0; i < s.length; i++){
                nums[i] = Integer.parseInt(s[i]);
       }

【讨论】:

    【解决方案3】:

    使用 for 循环。

    String numbers = "123456789";
            int[] nums = new int[numbers.length()];
            for(int i = 0; i < numbers.length(); i++){
                nums[i] = Integer.parseInt(""+numbers.charAt(i));
            }
    

    【讨论】:

      【解决方案4】:
      String s="12 23 76 87 98";
              while (s.indexOf(" ")!=-1)
              {
                  System.out.println(Integer.parseInt(s.substring(0,s.indexOf(" "))));
                  s=s.substring(s.indexOf(" ")+1, s.length());
              }
              System.out.println(Integer.parseInt(s.substring(0,s.length()))); // for last integer
      
      
      Output:
      12
      23
      76
      87
      98
      

      【讨论】:

        【解决方案5】:

        空间可以避免。所以让代码是:

        第一种方式:

            String numbers []  = {"1" , "2" , "3"};
            int firstNum = Integer.parseInt(numbers[0]);
            int secondNum = Integer.parseInt(numbers[1]);
            int thirdNum = Integer.parseInt(numbers[2]);
            // strings are now parsed 
        

        第二种方式:

           private String numbers = new String[3] ;
           numbers[0] = "1" ;
           numbers[1] = "2" ;
           numbers[2] = "3" ;
           int firstNum = Integer.parseInt(numbers[0]);
           int secondNum = Integer.parseInt(numbers[1]);
           int thirdNum = Integer.parseInt(numbers[2]);
           // strings are now parsed 
        

        第三种方式: (使用for循环)注意:for循环可以初始化多个变量

          int numArray = new int(3);
          String strNum = {"1" , "2" , "3"} ;
        
         for( int ic ; int i ; ic < 3;  ic ++){
                i += 1 ;
                numArray[i] = Integer.parseInt(strNum[ic]);
          }  
        

        我建议只有在有更多数字时才使用 for 循环。对于一个由三个数字组成的字符串,最好单独赋值。

        希望我能帮到你。

        【讨论】:

        • 糟糕的答案,连你的for loop 语法都错了?
        猜你喜欢
        • 2013-12-21
        • 2020-12-02
        • 1970-01-01
        • 1970-01-01
        • 2010-09-17
        • 2011-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多