【问题标题】:How to take multiple integers as single input separated by space in java, then break them into integers?java - 如何在java中将多个整数作为由空格分隔的单个输入,然后将它们分解为整数?
【发布时间】:2016-05-25 03:25:27
【问题描述】:

需要输入 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++; 
    } 
  } 
}

【问题讨论】:

  • 实际上应该可以。向我们展示您的尝试。
  • 类 Cube{ public static void main(String args[]){ int i,j=0,sum=0; int arr[]=新的 int[10];扫描仪扫描=新扫描仪(System.in);字符串 s=scan.nextLine(); int len =s.length(); for(i=0;i

标签: java arrays string numbers cube


【解决方案1】:

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

将这些放在一起,将 int(s) 的立方求和在您的 String 中,您可以这样做,

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

【讨论】:

    【解决方案2】:

    您没有将字符串解析为 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); 
        } 
      } 
    }
    

    【讨论】:

    • 你应该删除 int len = s.length();因为没用过
    • 工作类 Cube{ public static void main(String args[]){ int i,sum=0;国际温度=0;扫描仪扫描=新扫描仪(System.in);字符串 s=scan.nextLine();字符串[] str=s.split(" "); for(i=0;i温度温度; } System.out.print(sum); } }
    【解决方案3】:
    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);
      } 
    }
    

    【讨论】:

      【解决方案4】:

      这是一个将所需输入转换为 3 int 输入数字的幂的演示:

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

      【讨论】:

        猜你喜欢
        • 2013-08-17
        • 1970-01-01
        • 2019-07-09
        • 2012-12-29
        • 1970-01-01
        • 2015-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多