Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法获取所有用户输入的单词字谜_Java_Arrays_User Input - Fatal编程技术网

Java 无法获取所有用户输入的单词字谜

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

我正在写一个程序,检查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();
    }

}
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键后才会打印最后一个输出,您可以尝试使用新行进行复制。我从在线练习网站上得到这个问题,那里的评委系统不接受我的解决方案,我无法控制它如何输入数据.