因此,当我运行程序的main方法时,它会打印出来:
Enter number of test cases:
1
Enter string 1
Enter string 2
rat apple cat ear cat apple rat
出于某种原因,在我为String 1输入任何内容之前,它会打印Enter string 1 and Enter string 2
。任何人都可以解释为什么会发生这种情况。我BufferReader
设置的方式有问题吗?
代码:
public static void main(String[] args) throws IOException
{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter number of test cases: ");
int testcases = in.read();
System.out.println("Enter string 1");
String[] str1 = in.readLine().split(" ");
System.out.println("\nEnter string 2");
String[] str2 = in.readLine().split(" ");
for(int i = 0; i < testcases; i++)
{
String result = lcss(str1, str2);
System.out.println("\nLCSS: "+ result);
System.out.println("\nLCSS Length = "+ result.length());
}
}
答案 0 :(得分:0)
答案 1 :(得分:0)
修改强>
获取测试用例的数量为整数
创建一个二维数组来存储测试用例。第一维包含每个测试用例和&amp;第二维在每个测试用例中保存单词列表的String []。
迭代“for循环”,直到获得每个测试用例字符串数组的总测试用例数,
示例代码:
public static void main(String[] args) throws Exception
{
Scanner in = new Scanner(System.in);
System.out.println("Enter number of test cases: ");
int testcases = in.nextInt();
System.out.println("test cases:"+testcases);
String[][] strs = new String[testcases][];
for ( int i =0; i< testcases ; i++ ){
System.out.println("Enter string:"+i);
in = new Scanner(System.in);
if (in.hasNext()) {
String s = in.nextLine();
System.out.println(s);
strs[i] = s.split(" ");
System.out.println("Length:"+strs[i].length);
}
System.out.println();
}
// Add your logic
}
答案 2 :(得分:0)
int testcases = in.read();
没有读取换行符(当您按Enter键时)。
行readLine()
中的String[] str1 = in.readLine().split(" ");
现在将在您输入的号码后直接读取,并搜索下一个换行符。现在可以找到输入数字的换行符,直接返回函数而不等待输入。
关于导致程序行为方式的原因的解释非常多。
现在您还有另一个错误,因为BufferedReader.read()
没有做您认为的事情。查看documentation
因此,当您输入1
时,您的testcases
变量将包含字符'1'
的UTF-16值,即31。
正如其他答案已经指出的那样,您应该使用Integer.valueOf(in.readLine());
来获取testcases
的值或使用Scanner