程序应该让我输入值a和字符串。虽然它允许我在字符串中输入整数,但它会输出问题,但不允许我输入任何内容。
import java.util.Scanner;
public class PrSumN {
public static void main(String args[]) {
System.out.println("Enter a value");
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int sum = 0;
int pr = 1;
System.out.println("Do you want the sum of the numbers or the products of the numbers?");
String answer = sc.nextLine();
//Itdoesnotletmeinputmystringatthispoint
if (answer == "sum") {
sum(a, sum);
} else {
product(a, pr);
}
}
public static void sum(int a, int sum) {
for (int i = 0; i < a; i++) {
sum = sum + (a - i);
}
System.out.println("The sum of the numbers is " + sum);
}
public static void product(int a, int pr) {
for (int i = 0; i < a; i++) {
pr = pr * (a - i);
}
}
}
答案 0 :(得分:4)
拨打int a = sc.nextInt();
后,在控制台中输入一个整数,然后按Enter键。您输入的整数存储在a
中,而换行符(\n
)由String answer = sc.nextLine();
读取,因此它不接受来自你的字符串。
添加此行
sc.nextLine(); // Will read the '\n' character from System.in
之后
int a = sc.nextInt();
另一种方法:您可以扫描string
而不是int
并通过解析a
来获取int
< / EM>:
try {
int a = Integer.parseInt(sc.nextLine());
}
catch (ParseException ex) { // Catch
}
在其他(侧面)备注上,请勿使用if (answer=="sum")
,而应使用
if (Object.equals (answer, "sum")
请参阅this。
答案 1 :(得分:3)
这一行之后:
int a = sc.nextInt();
添加:
sc.nextLine();
您需要添加sc.nextLine()
的原因是因为nextInt()
不使用换行符。
或者,您可以扫描String并将其解析为相应的类型,例如:
int a = Integer.parseInt(sc.nextLine());
添加:与您的主要问题无关的内容,在比较字符串的值时,请使用.equals
而不是==
。
我们使用==
来比较身份,因此它应该是:
if (answer.equals("sum"))