如何将多个整数作为java中以space分隔的单个输入,然后将它们分解为整数?

How to take multiple integers as single input separated by space in java, then break them into integers?

需要输入 1 2 3 或由 space 分隔的任意长度 然后将其分解成单独的整数。 我尝试了 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++; 
    } 
  } 
}

当您调用 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);

是3i,我相信你想要

sum+=(i * i * i);

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

把它们放在一起,对 Stringint(s) 的立方体求和,你可以做到,

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

您没有将字符串解析为 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); 
    } 
  } 
}
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 次幂的演示:

    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);
         }
    }