【问题标题】:Is String to int Array conversion possible?String 到 int 数组的转换是否可行?
【发布时间】:2019-08-15 08:03:15
【问题描述】:

我已经编写了一段代码,其中我扫描了一个假设为 121 的整数并将其分成 3 部分,我将其设为字符串并尝试通过拆分再次对其进行转换。但我不明白吗?有什么简单的方法可以做到吗?

  public static void main(String []args){
      Scanner scan = new Scanner(System.in);
      int n = scan.nextInt() ;
      int sum = 0;
      for(int i = 1 ; i<=n; i++){
         String s = Integer.toString(i);

          int[] c = Integer.parseInt(s.split("")); //Here's the problem
          int sm = 0 ;
          for(int x :c){
              sm +=x ;
          }
          System.out.print(sm+" ");
       }
   }

输入 = 12

预期输出:1 2 3 4 5 6 7 8 9 1 2 3

输出:Main.java:14:错误:不兼容的类型:字符串 [] 不能 转换为字符串 int[] c = Integer.parseInt(s.split(""));

【问题讨论】:

  • 欢迎来到 Stackoverflow,请阅读How To Ask。请特别注意How To Create MCVE,并说明您的输入和预期输出与实际输出是什么。确保使用适当的标签(编程语言、相关技术等)标记您的问题。您在发布一个好问题上付出的努力越多:一个易于阅读、理解并且是 on topic 的问题 - 您得到答案的机会就越高。
  • 为什么要先转换成String?

标签: java


【解决方案1】:

您的预期输出似乎不需要任何整数到字符串的转换:

int n = scan.nextInt();
for (int i=0; i < n; i++) {
    if (i > 0) System.out.print(" ");
    System.out.print(1 + i % 9);
}

对于n = 12 的输入,将打印:

1 2 3 4 5 6 7 8 9 1 2 3

【讨论】:

  • 其实就是remainder operator
  • @ScaryWombat Modulo operationModula 是 Nicholas Wirth 的一个语言家族。
  • @ScaryWombat 不用担心。老实说,不确定这是否只是一个错字。
【解决方案2】:

您不能将整个数组传递给parseInt()。您需要单独解析每个元素:

int[] c = Arrays.stream(s.split(""))
        .mapToInt(Integer::parseInt)
        .toArray();

或者老式的方式:

String[] chars = s.split("");
int[] c = new int[chars.length];
for (int i = 0; i < c.length; i++) {
    c[i] = Integer.parseInt(chars[i]);
}

【讨论】:

    【解决方案3】:

    可以String[](从split)中的每个字符映射到int,然后将其转换为int[]。喜欢,

    int[] c = Arrays.stream(s.split("")).mapToInt(Integer::parseInt).toArray();
    

    没有其他更改,产生(按要求)

    1 2 3 4 5 6 7 8 9 1 2 3 
    

    输入“12”。

    【讨论】:

    • 这是获得答案的最佳方式..谢谢
    【解决方案4】:

    您也可以使用 IntStream 执行此操作。

    
        int n = 12;
        int[] values = IntStream.range(0, n).map(i -> i % 9 + 1).toArray();
        System.out.println(Arrays.toString(values));
    
    

    生产

    [1 2 3 4 5 6 7 8 9 1 2 3]

    对于 n = 12

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-06
      • 2013-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-28
      • 1970-01-01
      相关资源
      最近更新 更多