所以我只是一个10年级的学生,我们正在做这个程序我们会得到广场,但它会拒绝负数使用尝试并抓住我的教授说我是唯一一个接近输出但跑了没时间了。
这是代码。 它显示答案,但不拒绝负数,也不显示"只有正数" 帮忙:D
import java.util.*;
public class MySquare{
public static void main(String args[]){
int num;
int square;
Scanner s = new Scanner(System.in);
System.out.print("Input a number.");
num = s.nextInt();
square = num * num;
System.out.println("Square: " + square);
try{
if( num <0){
throw new InputMismatchException("Only Positive Numbers!");
}
}catch (InputMismatchException e){
}
答案 0 :(得分:0)
你的拦截空是空的 - 这是一个非常糟糕的主意。永远不要那样做。
至少应该添加:
} catch (InputMismatchException e) {
e.printStackTrace();
}
一句忠告:学习并遵循严格的代码风格。大括号,名字等的放置非常重要。
答案 1 :(得分:0)
你已经很亲密了。试试这个:
public static void main(String args[]){
int num;
Scanner s = new Scanner(System.in);
System.out.print("Input a number.");
try{ // try catch should surround s.nextInt, too
num = s.nextInt(); // read the input
if( num <0){
throw new InputMismatchException("Only Positive Numbers!");
}
// this part isnt reached in case of a negative number
int square = num * num;
System.out.println("Square: " + square);
}catch (InputMismatchException e){
System.out.println("invalid input! " + e.getMessage()); // catch the exception and print its message (e.g. "Only Positive Numbers!" when a negative number is entered)
}
}
答案 2 :(得分:0)
而不是 InputMismatchException 使用 IllegalArgumentException()
代码重构
import java.util.*;
public class MySquare{
public static void main(String args[]){
int num;
int square;
Scanner s = new Scanner(System.in);
System.out.print("Input a number.");
num = s.nextInt();
try {
if(num < 0){
throw new IllegalArgumentException("Only Positive Numbers!");
}
square = num * num;
System.out.println("Square: " + square);
} catch (IllegalArgumentException e) {
e.printStackTrace();
}
}
}