私は、2 つの単語または句を取り込んで、Unicode 値が一致するかどうかを確認することで、それらがアナグラムであるかどうかをテストするプログラムを作成しようとしています。メソッド「検索」は、それらが同じ長さである場合にのみ実行されます..問題がありましたが、解決されました.
改訂版は次のとおりです。
コードのレイアウト方法のスタイルについてどうお考えですか。それは明らかですか?別の方法で行う必要がありますか?それとも読みやすいと思いますか?他の人にわかりやすく伝える方法について何かアドバイスはありますか?
コメントを追加する場合、それらは短くする必要がありますか、それとも複数行のコメントでその部分がどのように機能するかを説明する必要がありますか?
私はできるだけ簡単に見えるようにしたいと思っていますが、それについての本当のアドバイスはほとんど得られていません。
import java.util.Scanner;
public class AnagramCount {
public static void main(String[] args) {
System.out.println("Please enter two words, one per line, to test if it is an anagram");
Scanner userInput = new Scanner(System.in);
String word1 = userInput.nextLine();
String word2 = userInput.nextLine();
int count = 0;
int[] char_code = new int[word1.length()];
int[] char_code2 = new int[word2.length()];
char[] temp = word2.toCharArray();
boolean match = true;
if (word1.length() == word2.length()){
search(word1, word2, count, char_code, char_code2, match, temp);
if (match == true){
if (char_code[word1.length()-1] == 0){
match = false;
}
else {
// if match remains true after this final check, information about it will print
System.out.print("word1 unicode values: ");
for(int i = 0; i < word1.length(); i++){
System.out.print(char_code[i] + " ");
}
System.out.println();
System.out.print("word2 unicode values: ");
for(int i = 0; i < word1.length(); i++){
System.out.print(char_code2[i] + " ");
}
}
}
}
else {
match = false;
}
System.out.println("\n" + "Anagram? t/f?: " + match);
}
public static void search(String word1, String word2, int count, int[] char_code, int[] char_code2, boolean match, char[] temp)
{
StringBuilder word1check = new StringBuilder(word1);
StringBuilder word2check = new StringBuilder(word2);
int word1_unicode = 0;
int word2_unicode = 0;
if(count >= word1.length())
return;
else
{
for(int i = 0; i < word2.length(); i++){
if (word1.charAt(count) == word2.charAt(i)){
word1_unicode = word1check.codePointAt(count);
char_code[count] = word1_unicode;
temp[i] = 0;
String str = new String(temp);
word2 = str;
word2_unicode = word2check.codePointAt(i);
char_code2[count] = word2_unicode;
if(count==word1.length()-1)
break;
search(word1, word2, ++count, char_code, char_code2, match, temp);
}
}
}
return;
}
}