如何将多个整数作为单个输入在java中用空格分隔,然后将它们分解为整数?

时间:2016-05-25 03:25:28

标签: java arrays string numbers cube

需要输入1 2 3或任何以空格分隔的长度 然后把它分成单独的整数。 我尝试了arrayStringsCharAt()string.split()方法,但它们无效。

输入可以是1 2 3 4或1 2或任何长度,我们需要将1,2,3作为整数分开。

到目前为止我已尝试过:

class Cube{ 
  public static void main(String args[]){ 
    int i,j=0,sum=0; int arr[]=new int[10]; 
    Scanner scan=new Scanner(System.in); 
    String s=scan.nextLine(); 
    int len =s.length(); 
    for(i=0;i<=len;i++){ 
        String[] str=s.split(" "); 
        int i=str[j]; sum+=Math.pow(3,i); j++; 
    } 
  } 
}

4 个答案:

答案 0 :(得分:2)

当您调用String.split时,您将获得String[]。在Java 8+中,您可以将其流式传输(并映射到int),然后转换为类似

的数组
String str = "1 2 3";
int[] arr = Stream.of(str.split("\\s+")).mapToInt(Integer::parseInt).toArray();

此外,

sum+=Math.pow(3,i);

是3 i ,我相信你想要

sum+=(i * i * i);

sum+=Math.pow(i, 3);

将它们放在一起,将int中的String(s)的多维数据集加起来,

int sum = Stream.of(str.split("\\s+")).mapToInt(Integer::parseInt)
        .map(x -> x * x * x).sum();

答案 1 :(得分:0)

您没有将字符串解析为int。您需要使用Integer.parseInt()。此外,首选使用BufferedReader

class Cube{ 
  public static void main(String args[]){ 
    int i,j=0,sum=0; int arr[]=new int[10]; 
    Scanner scan=new Scanner(System.in); 
    String s=scan.nextLine(); 

    String[] str=s.split(" ");
    for(i=0;i<=str.length;i++){ 
        int temp = Integer.parseInt(str[i]);
        sum+=Math.pow(3,temp); 
    } 
  } 
}

答案 2 :(得分:0)

import java.util.Scanner;

class Cube{ 
  public static void main(String args[]){ 
    int i,sum=0; int arr[]=new int[10]; 
    Scanner scan=new Scanner(System.in); 
    String s=scan.nextLine(); 

    String[] str = s.split(" "); 
    int len = str.length; 
    System.out.print(len);
    for(i=0; i < len; i++){ 
        int i1= Integer.parseInt(str[i]); 
        sum += Math.pow(3,i1);  
    } 
    System.out.println(sum);
  } 
}

答案 3 :(得分:0)

以下是将所需输入转换为3输入数字的功能的演示:

    class Cube{
      public static void main(String args[]){

          int sum = 0;
          //input
          System.out.println("Eneter whole numbers seperated by space: ");
          Scanner scan=new Scanner(System.in);
          String s=scan.nextLine();

          //remove spaces and get an array of strings
          String[] str = s.split(" ");
          int len = str.length;
          int ints[]=new int[len]; //this array can be omitted

          for(int i=0; i < len; i++){

              //convert array of string to ints
              //this is needed just for demonstration
              ints[i] = Integer.valueOf(str[i]);

              sum += Math.pow(3,Integer.valueOf(str[i] ));

          }

          //printout
          System.out.println("Input converted to int: "+ Arrays.toString(ints));
          System.out.println("Sum of 3 in the power of values entered : "+ sum);
         }
    }

这当然是一个非常脆弱和基本的代码,没有任何输入验证或异常处理。

这稍微好一些:

    import java.util.Scanner;

    class Cube{
      public static void main(String args[]){

          int sum = 0;   final String SPACE = " ";

          //input
          System.out.println("Eneter whole numbers seperated by space: ");
          Scanner scan=new Scanner(System.in);
          String s=scan.nextLine();

          //remove spaces and get an array of strings
          String[] str = s.split(SPACE);

          for(String intAsString : str){

              try {
                  sum += Math.pow(3,Integer.valueOf(intAsString));
              } catch (NumberFormatException ex) {
                System.err.println(intAsString+ " can not be converted to integer");
                ex.printStackTrace();
                System.exit(0);
            }
          }

          //printout
          System.out.println("Sum of 3 in the power of values entered : "+ sum);
         }
    }