我希望用户输入以下模式的行数,所以请标记我的错误。因为我是初学者,所以请给我一些书。 必须显示此模式
**********
*********
********
*******
******
*****
****
***
**
*
这是一个代码:
import java.util.Scanner;
class pattern{
public static void main (String agrs[]){
int n;
Scanner in =new Scanner(System.in);
System.out.println("enter the no. of rows in the pattern");
n= in.nextInt();
{
for(int i=0;i<n;i++)
{ for(int j=0; j<=i;j++)
System.out.print(" * ");
System.out.println(" ");
}}
}}
ERROR ......
enter the no. of rows in the pattern
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:909)
at java.util.Scanner.next(Scanner.java:1530)
at java.util.Scanner.nextInt(Scanner.java:2160)
at java.util.Scanner.nextInt(Scanner.java:2119)
at pattern.main(pattern.java:8)
答案 0 :(得分:4)
如果您检查oracle站点上的documentation,则异常的扩展为:
由扫描程序抛出,表示检索到的令牌没有 匹配预期类型的模式,或者令牌不在 预期类型的范围。
输入非整数输入时抛出此异常。
你需要添加一个try / catch来捕获它,并告知用户错误的输入。
示例:强>
import java.util.Scanner;
public class PatternTest {
public static void main(String agrs[]) {
int n = -1;
do
{
try {
Scanner in = new Scanner(System.in);
System.out.println("enter the no. of rows in the pattern");
n = in.nextInt();
} catch (java.util.InputMismatchException e) {
System.err.print("Please enter only an integer.");
}
}while(n == -1);
for (int i = 0; i < n; i++) {
for (int j = 0; j <= i; j++)
System.out.print(" * ");
System.out.println(" ");
}
}
}
<强>更新强>
int n = -1;
do
{
try {
Scanner in = new Scanner(System.in);
System.out.println("enter the no. of rows in the pattern");
n = in.nextInt();
} catch (java.util.InputMismatchException e) {
System.err.print("Please enter only an integer.");
}
}while(n == -1);
for (int rowNumber = n; rowNumber > 0; rowNumber--) {
for (int columnNumber = 0; columnNumber < rowNumber; columnNumber++)
System.out.print("*");
System.out.println(" ");
}
答案 1 :(得分:0)
尝试查看documentation。这里很清楚 以long形式返回下一个标记。如果下一个标记不是浮点数或超出范围,则抛出InputMismatchException。
请参阅also。