需要输入1 2 3或任何以空格分隔的长度
然后把它分成单独的整数。
我尝试了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++;
}
}
}
答案 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);
}
}