java单词字谜无法获取所有用户输入
我正在写一个程序,检查n个单词是否是最初给定单词的字谜。它是一个字谜,它会打印“是”,如果不是,它会打印“否”。如果我在控制台中手动输入所有数据,它就能正确地解决问题。如果我复制并粘贴数据,它不会“看到”最后一行,直到我再次按enter键。因此,我粘贴了以下输入:
anagram
6
gramana
aaagrnm
anagra
margana
abc
xy
所以我只得到了5个yes-es和no-s,当我再次按下回车键时,我得到了最后一个no
这是我的密码
import java.util.Scanner;
import java.util.Arrays;
public class WordAnagrams {
public static void anagramCheck (String x, String y) {
char[] initial= new char[x.length()];
for (int i=0; i<x.length(); i++) {
initial[i]=x.charAt(i);
}
Arrays.sort(initial);
char[] isAnagram = new char[y.length()];
for (int i=0; i<y.length(); i++) {
isAnagram[i]=y.charAt(i);
// System.out.println(isAnagram[i]);
}
Arrays.sort(isAnagram);
boolean same=Arrays.equals(initial, isAnagram);
if (same) {
System.out.println ("yes");
}
else {
System.out.println ("no");
}
// return answer;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
String word = input.nextLine();
int n = Integer.parseInt(input.nextLine());
String anagram=""; // input.nextLine();
// int counter=0;
System.out.println();
/* while (counter<n+1) {
anagram=input.nextLine();
anagramCheck(word, anagram);
// anagram=input.nextLine();
counter++;
}*/
for (int i=0; i<=n; i++) {
anagram=input.nextLine();
anagramCheck(word, anagram);
// anagram=input.nextLine();
// System.out.println(answers[i]);
}
System.out.println();
}
}
# 1 楼答案
@kalina199 您还可以将代码缩短一点,以避免定义检查控制台输入的方法。 我使用一个简单的正则表达式将控制台输入拆分成一个字符串数组,并立即对其进行排序。 然后我的循环做一个简单的检查,将新的用户输入与原始单词的长度进行比较,如果不匹配,只需打印“否”,然后继续下一个单词。 这是我的代码: