我正在获取java.util.NoSuchElementException:找不到行错误

时间:2019-04-20 10:12:01

标签: java java.util.scanner

回文词是向后或向前读相同的单词。 编写一个函数来检查给定的单词是否是回文。字符大小写应忽略。

我创建了方法isPalindrome(String word),该方法检查传递的字符串是否是回文,并返回布尔值。 例如,isPalindrome("Deleveled")应该返回true,因为应该忽略字符大小写,从而导致“降级”,这是回文,因为它前后读取相同的内容。

这是错误:

Exception in thread "main" java.util.NoSuchElementException: No line found
    at java.util.Scanner.nextLine(Scanner.java:1540)
    at Main.main(Main.java:20)

我的代码是:

import java.util.Scanner;
public class Main{
    static boolean isPalindrome(String word){
        int c=word.length()-1;
        boolean flag = false;
        for(int i=0; i<word.length(); i++){
            if(word.charAt(i)==word.charAt(c))
                flag=true;
            else
                return false;
            c--;
        }
        return flag;
    }

     public static void main(String []args){
        Scanner scan = new Scanner(System.in);
        String word= scan.nextLine();
        System.out.println(isPalindrome(word));
        scan.close();
     }
}

2 个答案:

答案 0 :(得分:0)

您的代码很好。比较之前,您只需要写一个小写或大写的单词即可。

static boolean isPalindrome(String word){
        word=word.toLowerCase();  //Added this
        int c=word.length()-1;
        boolean flag = false;
        for(int i=0; i<word.length(); i++){
            if(word.charAt(i)==word.charAt(c))
                flag=true;
            else
                return false;
            c--;
        }
        return flag;
    }

答案 1 :(得分:0)

在调用scan.readLine()之前添加scan.hasNextLine()