在在线Java编译器上运行代码而不是在记事本上运行时发生异常

时间:2018-07-28 14:19:30

标签: java java.util.scanner

我已经编写了代码,以打印使任何字符串成为回文所需的最小插入次数。在记事本上编写并通过 cmd 编译后,代码运行完美。但是在任何在线Java编译器上运行时,它都会提供 Exception 。 这是代码:

import java.io.*;

import java.util.Scanner;


class Solution
{
  public void disp(String s)
{
    int l=s.length();
    int pos=-1;
    for(int i=l-1;i>0;i--)
    {
        char b=s.charAt(i);
        char b1=s.charAt(i-1);
       if(b!=b1)
        {
            pos=i;
            break;
        }
    }
    String w=s.substring(0,pos);
    int l1=w.length();
    int count=0;
    for(int i=0;i<l1;i++)
     {
       char b=w.charAt(i);
        count++;
    }
    System.out.println(count);
}
}
public class scanner_call
 {
   public static void main(String[] args)throws InterruptedException
      {
    Scanner sc=new Scanner(System.in);
    System.out.println("Enter the one line string");
        String s=sc.next();
        Solution p1=new Solution();
        p1.disp(s);
      }
 }

在线编译器显示此异常。

Enter the one line string
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1371)
at scanner_call.main(scanner_call.java:39)

为什么这个程序可以在记事本中完美运行,却在在线编译器中引发异常?我该怎么办?

1 个答案:

答案 0 :(得分:1)

这是因为您的程序需要输入检测,但是您使用的在线编译器可能没有输入功能。

尝试一下:https://www.tutorialspoint.com/compile_java_online.php

将您的源代码放入Source Code标签

将您的输入内容输入到STDIN中(仅供参考,我在其中输入了“ asd ”,效果很好)

然后您应该会看到一些结果,可以更改输入,更改STDIN