代码是打印字符串中最长的回文
import java.util.*;
import java.lang.*;
import java.io.*;
class GFG
{
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
public static void main (String[] args) throws IOException
{
int max=0;
String s= br.readLine();
int t=Integer.parseInt(br.readLine());
while(t-->0)
{
String w=" ",x=" ";
int l=s.length();
for(int i=0;i<l;i++)
{
char c=s.charAt(i);
w=w+c;
x=c+x;
if(w.equalsIgnoreCase(x))
{
if(w.length()>max)
{
max=w.length();
}
}
if(x.length()>max)
System.out.println(x);
w=" ";
x=" ";
}
}
}
}
我收到输入"AAAABBAA"的错误
线程"main"中的异常 java.lang.NumberFormatException:对于输入字符串:"aaaabbaa" at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65( at java.base/java.lang.Integer.parseInt(Integer.java:652( at java.base/java.lang.Integer.parseInt(Integer.java:770( at GFG.main(File.java:14(
我是java的新手,在网页编译器的每个程序中都收到此错误
请教我哪里出错了
您可能应该检查br.readLine()
的空值。您调用了它两次,但输入中只有一行,因此第二次它返回 null,Integer.parseInt
无法处理它并引发错误。
起初你得到字符串的输入,然后你使用 Integer.parseInt(( 将字符串转换为 int,java 无法直接将字符串转换为 int 数据类型。
Integer.parseInt((方法只接受像 123 这样的数字常量,但你作为 abc 输入传递,所以 java 不能直接使用 Integer.parseInt(( 将该字母转换为 int,所以它会抛出 NumberFormatException。
如果您尝试从用户那里获取常量并转换为 int 表示,请使用以下代码:
int x, y;
String[] input;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
input = str.split(" ");
x = Integer.parseInt(input[0]);
y = Integer.parseInt(input[1]);
我希望它对你有帮助,谢谢
语句 int t=Integer.parseInt(br.readLine(((; 抛出异常,因为当方法 br.readLine(( 返回一个不可转换为 numeric(integer( 的值时。 方法 Integer.parseInt(( 的参数值必须是可转换为整数的字符串。 如果你想得到输入字符串的长度,只需使用 int t = s.length;在语句 String s = br.readLine(( 之后;
当我看到你的帖子时,我没有看到"你的代码的目的是什么?我的意思是你在代码中做什么"我只是在代码的最顶部看到错误,我为你提供了我的解决方案。现在我明白了目的..为了获得最佳解决方案,请进行动态编程 这个解决方案很有效,我已经在 LeetCode 上对其进行了测试。试试吧
public String longestPalindrome(String str) {
if(str.isEmpty()) {
return "";
}
int n = str.length();
int longestStr = 0, start = 0, end = 0;
boolean[][] palindrom = new boolean[n][n];
for(int j = 0; j < n; j++) {
palindrom[j][j] = true;
for(int i = 0; i < j; i++) {
if(str.charAt(i) == str.charAt(j) && (j-i <= 2 || palindrom[i+1][j-1])) {
palindrom[i][j] = true;
if(j-i+1 > longestStr) {
longestStr = j-i+1;
start = i;
end = j;
}
}
}
}
return str.substring(start, end+1);
}