有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    @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");
                }
            }
        }
    }