Java 无法获取所有用户输入的单词字谜
我正在写一个程序,检查n个单词是否是最初给定单词的字谜。它是一个字谜,它会打印“是”,如果不是,它会打印“否”。如果我在控制台中手动输入所有数据,则可以正确地解决问题。如果我复制并粘贴数据,它不会“看到”最后一行,直到我再次按enter键。因此,我粘贴以下输入:Java 无法获取所有用户输入的单词字谜,java,arrays,user-input,Java,Arrays,User Input,我正在写一个程序,检查n个单词是否是最初给定单词的字谜。它是一个字谜,它会打印“是”,如果不是,它会打印“否”。如果我在控制台中手动输入所有数据,则可以正确地解决问题。如果我复制并粘贴数据,它不会“看到”最后一行,直到我再次按enter键。因此,我粘贴以下输入: anagram 6 gramana aaagrnm anagra margana abc xy 所以我只得到5个yes-es和no-s,当我再次按下回车键时,我得到最后一个no 这是我的密码 import java.util.Scan
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();
}
}
import java.util.Scanner;
导入java.util.array;
公共类字谜{
公共静态空白anagramCheck(字符串x、字符串y){
char[]initial=新字符[x.length()];
对于(int i=0;i而言,问题在于当您复制粘贴输入时,最后一个单词的结尾没有“\n”,因此扫描仪在按ENTER键之前不会将其作为一行读取
因此,我可以提出以下建议:
1) 使用文件作为输入
或者2)使用InputStreamReader从控制台获取。下面是一些代码:
`
public static void main(String[] args) throws IOException {
char buffer[] = new char[512];
InputStreamReader input = new InputStreamReader(System.in);
input.read(buffer,0,512);
String data[] = (new String(buffer)).split("\n");
}
`
它会在末尾为您提供一个字符串列表。PS:Your loop“for(int i=0;i问题是,当您复制粘贴输入时,最后一个单词的末尾没有“\n”,因此扫描仪在按ENTER键之前不会将其作为一行读取
因此,我可以提出以下建议:
1) 使用文件作为输入
或者2)使用InputStreamReader从控制台获取。下面是一些代码:
`
public static void main(String[] args) throws IOException {
char buffer[] = new char[512];
InputStreamReader input = new InputStreamReader(System.in);
input.read(buffer,0,512);
String data[] = (new String(buffer)).split("\n");
}
`
它在末尾给你一个字符串列表。PS:Your loop“for(inti=0;i@kalina199
您还可以将代码缩短一点,以避免定义一个方法来检查控制台的输入。
我使用一个简单的正则表达式将控制台输入拆分成一个字符串数组,并立即对其进行排序。
然后我的循环做一个简单的检查,将新的用户输入与原始单词的长度进行比较,如果不匹配,只需打印“否”,然后继续下一个单词。
这是我的密码:
package bg.Cholakov;
import java.util.Arrays;
import java.util.Scanner;
public class Anagram {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String[] initWord = scanner.nextLine().split("");
Arrays.sort(initWord);
int num = Integer.parseInt(scanner.nextLine());
for (int i = 0; i < num; i++) {
String[] testWord = scanner.nextLine().split("");
Arrays.sort(testWord);
if (!(initWord.length == testWord.length)) {
System.out.println("no");
} else if (initWord[i].equals(testWord[i])) {
System.out.println("yes");
} else {
System.out.println("no");
}
}
}
}
包bg.Cholakov;
导入java.util.array;
导入java.util.Scanner;
公共类字谜{
公共静态void main(字符串[]args){
扫描仪=新的扫描仪(System.in);
字符串[]initWord=scanner.nextLine().split(“”);
Arrays.sort(initWord);
int num=Integer.parseInt(scanner.nextLine());
for(int i=0;i
@kalina199
您还可以将代码缩短一点,以避免定义一个方法来检查控制台的输入。
我使用一个简单的正则表达式将控制台输入拆分成一个字符串数组,并立即对其进行排序。
然后我的循环做一个简单的检查,将新的用户输入与原始单词的长度进行比较,如果不匹配,只需打印“否”,然后继续下一个单词。
这是我的密码:
package bg.Cholakov;
import java.util.Arrays;
import java.util.Scanner;
public class Anagram {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String[] initWord = scanner.nextLine().split("");
Arrays.sort(initWord);
int num = Integer.parseInt(scanner.nextLine());
for (int i = 0; i < num; i++) {
String[] testWord = scanner.nextLine().split("");
Arrays.sort(testWord);
if (!(initWord.length == testWord.length)) {
System.out.println("no");
} else if (initWord[i].equals(testWord[i])) {
System.out.println("yes");
} else {
System.out.println("no");
}
}
}
}
包bg.Cholakov;
导入java.util.array;
导入java.util.Scanner;
公共类字谜{
公共静态void main(字符串[]args){
扫描仪=新的扫描仪(System.in);
字符串[]initWord=scanner.nextLine().split(“”);
Arrays.sort(initWord);
int num=Integer.parseInt(scanner.nextLine());
for(int i=0;i
只有在输入新行字符时,下一行才会输入程序,这就是为什么只有在按enter键后才会打印最后一个输出,您可以尝试用新行复制。我从在线练习网站得到这个问题,那里的评委系统不接受我的解决方案,我无法控制它如何输入data.next line仅在输入新行字符时才会输入程序,这就是为什么只有在按enter键后才会打印最后一个输出,您可以尝试使用新行进行复制。我从在线练习网站上得到这个问题,那里的评委系统不接受我的解决方案,我无法控制它如何输入数据.