繁体   English   中英

我想问一下发生了什么,每当我尝试运行它时,它总是给我这样的运行时错误

[英]I want to ask on what's going on, whenever I try to run it, it keeps giving me run time error like this

我希望用户为以下模式输入行数,因此请标记我的错误。由于我是Java的初学者,因此也请向我推荐一些书。 必须显示此图案

**********   
*********    
********     
*******      
******       
*****        
****         
***          
**           
* 

这是一个代码:

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)

如果您查看oracle站点上的文档 ,则Exception的含义如下:

由扫描程序抛出,以指示检索到的令牌与预期类型的​​模式不匹配,或者令牌超出预期类型的​​范围。

输入非整数输入时将引发此异常。

您需要添加一个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(" ");
}

尝试查看文档。这里很明显返回下一个令牌。 如果下一个令牌不是浮点型或超出范围,则抛出InputMismatchException。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM