Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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中仅使用string类检查字谜_Java_String - Fatal编程技术网

在java中仅使用string类检查字谜

在java中仅使用string类检查字谜,java,string,Java,String,我有一个任务,写一个程序,接受两个单词,然后返回它们是否是彼此的字谜。目前,我正在尝试遍历第一个单词的每个字母,并检查它是否与第二个单词中的字母匹配。然后我将计数器int与任意一个单词的总长度进行比较,如果它们是字谜,那么总长度应该相等 我有一个错误,当前我得到一个无限循环,如果单词是字谜,则向上计数,如果不是,则计数到以程序结尾的单词中的字母数 赋值状态仅使用String类中可用的方法。不要使用其他Java库实用程序,因此我无法将单词放入数组并使用arrays.Sort import java

我有一个任务,写一个程序,接受两个单词,然后返回它们是否是彼此的字谜。目前,我正在尝试遍历第一个单词的每个字母,并检查它是否与第二个单词中的字母匹配。然后我将计数器int与任意一个单词的总长度进行比较,如果它们是字谜,那么总长度应该相等

我有一个错误,当前我得到一个无限循环,如果单词是字谜,则向上计数,如果不是,则计数到以程序结尾的单词中的字母数

赋值状态仅使用String类中可用的方法。不要使用其他Java库实用程序,因此我无法将单词放入数组并使用arrays.Sort

import java.util.Scanner;

public class anagram {
  public static void main (String[] args) {
    Scanner scanner = new Scanner(System.in);
    System.out.println("Enter two strings");

    String s1 = scanner.next();
    String s2 = scanner.next();


    int counter = 0;

    int number1 = 0;
    int number2 = 0;

    if(s1.length() != s2.length()) {
        System.out.println("The strings are not anagrams");
    }   else {


        for(int i = 0; i < s1.length() ; i++) {
            for(int j = 0; j < s1.length() ; i++) {

                // number1 = i;
                // number2 = j;

                if(i == s1.length()){
                    number1 = i - 1;
                }
                if(j == s2.length()){
                    number2 = j - 1;
                }


                if(s1.charAt(number1) == s2.charAt(number2)) {
                    counter ++ ;
                    System.out.println(counter);
                }

            }

        }
        System.out.println(counter);

    }

    System.out.println(s1 + " " + s2 + " " + counter);

}

}

在for循环的第二级中,您将增加i而不是j。因为j从不递增,所以j
import java.util.Scanner;

public class anagram {
  public static void main (String[] args) {
    Scanner scanner = new Scanner(System.in);
    System.out.println("Enter two strings");

    String s1 = scanner.next();
    String s2 = scanner.next();


    int counter = 0;

    int number1 = 0;
    int number2 = 0;

    if(s1.length() != s2.length()) {
        System.out.println("The strings are not anagrams");
    }   else {


        for(int i = 0; i < s1.length() ; i++) {
            for(int j = 0; j < s1.length() ; j++) { //LOOK HERE <======

                // number1 = i;
                // number2 = j;

                if(i == s1.length()){
                    number1 = i - 1;
                }
                if(j == s2.length()){
                    number2 = j - 1;
                }


                if(s1.charAt(number1) == s2.charAt(number2)) {
                    counter ++ ;
                    System.out.println(counter);
                }

            }

        }
        System.out.println(counter);

    }

    System.out.println(s1 + " " + s2 + " " + counter);

}
}
你的问题就在这里

 for(int j = 0; j < s1.length() ; j++) {   ///change i to j
您正在检查n^2次,但是这只能用2n次完成

获取数组中第一个字符串存储中出现的所有字母 获取数组中第二个字符串存储区中出现的所有字母 同时在两个数组中循环,并比较所有引用是否相同。
如果大小写不敏感,数组将有26个元素存储a-z的出现次数

在嵌套循环中增加两次i变量。在你的j循环中,你有i++在哪里,它应该是j++@T琼斯。你可以使用数组吗?你可以得到每个字符的ASCII值吗?因为你可以将这些值相加并检查是否相等,你也可以使用String.replaceFirstString正则表达式、String replacement和迭代substrings来解决这个问题谢谢,这样做并取消注释两行注释解决了我的问题如果你觉得我的答案解决了你的问题,请将其标记为解决方案。@T Jones您可以通过单击我答案旁边空心的勾号来接受我的解决方案。你得到2个代表作为回报。请注意,每个问题只能接受一个解决方案。