如何将多个整数作为java中以space分隔的单个输入,然后将它们分解为整数?
How to take multiple integers as single input separated by space in java, then break them into integers?
需要输入 1 2 3 或由 space 分隔的任意长度
然后将其分解成单独的整数。
我尝试了 array
、Strings
和 CharAt()
、 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);
把它们放在一起,对 String
中 int
(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);
}
}
需要输入 1 2 3 或由 space 分隔的任意长度
然后将其分解成单独的整数。
我尝试了 array
、Strings
和 CharAt()
、 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);
把它们放在一起,对 String
中 int
(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);
}
}