我已经编写了代码,以打印使任何字符串成为回文所需的最小插入次数。在记事本上编写并通过 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)
为什么这个程序可以在记事本中完美运行,却在在线编译器中引发异常?我该怎么办?
答案 0 :(得分:1)
这是因为您的程序需要输入检测,但是您使用的在线编译器可能没有输入功能。
尝试一下:https://www.tutorialspoint.com/compile_java_online.php
将您的源代码放入Source Code
标签
将您的输入内容输入到STDIN
中(仅供参考,我在其中输入了“ asd ”,效果很好)
然后您应该会看到一些结果,可以更改输入,更改STDIN