Java - 加泰罗尼亚数字 IllegalArgumentException 和 boolean 到 int 的问题
Java - Catalan numbers IllegalArgumentException and boolean to int problems
我正在尝试编写一个从用户那里获取整数值 (n) 的程序,检查它是否大于 0 且小于 30。如果是这种情况,它会调用我的加泰罗尼亚数字方法并替换 n in. 如果输入的数字小于 0 或大于 30,它应该抛出 IllegalArgumentException。
catalan numbers 方法似乎没有问题,但是当我尝试调用 catalan numbers 方法并在其中输入 'n' 时会出现问题。所有的问题都局限于 switch 语句,它不会接受函数 'n.equals("quit"), (n>30), (n < 0),也不会调用 my加泰罗尼亚数字法。
到目前为止,这是我的代码:
public class Exercise_3 {
public static long catalan(int n) throws IllegalArgumentException {
int res = 0;
// Base case
if (n <=1) {
return 1;
}
for (int i = 0; i < n; i++) {
res += catalan(i) * catalan( n - i - 1);
}
return res;
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
Exercise_3 cn = new Exercise_3();
System.out.println("Please enter an integer greater than 0 and less than 30 or type 'quit' to exit.");
boolean n = scan.nextBoolean(); {
switch(n) {
if (n.equals("quit")) {
break;
}
else
case (n > 30):
throw IllegalArgumentException;
break;
case (n < 0):
throw IllegalArgumentException;
break;
case (0 < n <= 30):
int i = cn(n);
break;
}
System.out.println(i);
}
}
}
如果有人对此有任何解决方案,我将不胜感激。
抱歉,您使用 switch 的方法完全错误。这不是 Java 可以将 Promise 的结果传递给布尔值的脚本。如果要用Java,就得学习完全不同的解题思路。 Switch 是解决您的问题的最糟糕选择。尝试使用嵌套的 If 语句。
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Please enter an integer greater than 0 and less than 30 or type 'quit' to exit.");
String input = scan.next();
if(!input.equals("quit")) {
int number = Integer.parseInt(input);
if(number < 0 || number > 30) {
throw new IllegalArgumentException("number out of range");
}
else {
int i = catalan(number);
System.out.println(i);
}
}
}
我正在尝试编写一个从用户那里获取整数值 (n) 的程序,检查它是否大于 0 且小于 30。如果是这种情况,它会调用我的加泰罗尼亚数字方法并替换 n in. 如果输入的数字小于 0 或大于 30,它应该抛出 IllegalArgumentException。
catalan numbers 方法似乎没有问题,但是当我尝试调用 catalan numbers 方法并在其中输入 'n' 时会出现问题。所有的问题都局限于 switch 语句,它不会接受函数 'n.equals("quit"), (n>30), (n < 0),也不会调用 my加泰罗尼亚数字法。
到目前为止,这是我的代码:
public class Exercise_3 {
public static long catalan(int n) throws IllegalArgumentException {
int res = 0;
// Base case
if (n <=1) {
return 1;
}
for (int i = 0; i < n; i++) {
res += catalan(i) * catalan( n - i - 1);
}
return res;
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
Exercise_3 cn = new Exercise_3();
System.out.println("Please enter an integer greater than 0 and less than 30 or type 'quit' to exit.");
boolean n = scan.nextBoolean(); {
switch(n) {
if (n.equals("quit")) {
break;
}
else
case (n > 30):
throw IllegalArgumentException;
break;
case (n < 0):
throw IllegalArgumentException;
break;
case (0 < n <= 30):
int i = cn(n);
break;
}
System.out.println(i);
}
}
}
如果有人对此有任何解决方案,我将不胜感激。
抱歉,您使用 switch 的方法完全错误。这不是 Java 可以将 Promise 的结果传递给布尔值的脚本。如果要用Java,就得学习完全不同的解题思路。 Switch 是解决您的问题的最糟糕选择。尝试使用嵌套的 If 语句。
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Please enter an integer greater than 0 and less than 30 or type 'quit' to exit.");
String input = scan.next();
if(!input.equals("quit")) {
int number = Integer.parseInt(input);
if(number < 0 || number > 30) {
throw new IllegalArgumentException("number out of range");
}
else {
int i = catalan(number);
System.out.println(i);
}
}
}