请告诉我代码有什么问题 为什么它对某些输入无限期地运行,而对于某些输入,它给出了所需的结果

问题描述

/这段代码是关于获取用户输入的字符串并以周期元素格式的形式打印出来。对于某些用户输入代码显示所需的结果,例如 mg 将给出 Mg,hhe 将给出 HHe,但作为输入将使代码无限期地运行。请建议代码中可能存在的问题/错误/

导入 java.util.Scanner;

公共课化学{

public static void main(String[] args) {

    String[] elements = { "H","He","Li","Be","B","C","N","O","F","Ne","Na","Mg","Al","Si","P","S","Cl","Ar","K","Ca","Sc","Ti","V","Cr","Mn","Fe","Co","Ni","Cu","Zn","Ga","Ge","As","Se","Br","Kr","Rb","Sr","Y","Zr","Nb","Mo","Tc","Ru","Rh","Pd","Ag","Cd","In","Sn","Sb","Te","I","Xe","Cs","Ba","La","Ce","Pr","Nd","Pm","Sm","Eu","Gd","Tb","Dy","Ho","Er","Tm","Yb","Lu","Hf","Ta","W","Re","Os","Ir","Pt","Au","Hg","Tl","Pb","Bi","Po","At","Rn","Fr","Ra","Ac","Th","Pa","U","Np","Pu","Am","Cm","Bk","Cf","Es","Fm","Md","No","Lr","Rf","Db","Sg","Bh","Hs","Mt","Ds","Rg","Cn"};        

    Scanner myScanner = new Scanner(system.in);
    System.out.print("Enter a word: ");
    String inputWord = myScanner.next();
    StringBuilder chemWord = spellWord(inputWord,elements);
    System.out.println(chemWord);
    myScanner.close();
}

public static StringBuilder spellWord(String word,String[] elements) {
   
    int m = word.length();
    StringBuilder finalWord = new StringBuilder(word);
    Scanner testScanner = new Scanner(system.in);            
 
    for(int i=0;i<m;i++){

         int k =0;

         while (true) {
               int c = Character.compare(word.charat(i),elements[k].charat(0));
           
               if (((c == 0) || (c == 32) ||(c == -32)) && (elements[k].length() == 2) && (i<m-1)) {

                    int d = Character.compare(word.charat(i + 1),elements[k].charat(1));

                    if ((d == 0) || (d == 32) || (d == -32)) {
                    finalWord.setCharat(i,elements[k].charat(0));
                    i = i + 1;                       
                    finalWord.setCharat(i,elements[k].charat(1));                      
                    break;
               } else continue;

           }

           if (((c == 0) || (c == 32) ||(c == -32)) && (elements[k].length() != 2) )   {
               finalWord.setCharat(i,elements[k].charat(0));
               break;
           }


           if (k == (elements.length-1)) {
               System.out.println("At k==length-1 block");
               c = Character.compare(word.charat(i),elements[k].charat(0));
               System.out.println("value of c: "+c);
               if (((c == 0) || (c == 32) ||(c == -32)) && (elements[k].length() == 2) && (i<m-1)) {

                   int d = Character.compare(word.charat(i + 1),elements[k].charat(1));

                   if ((d == 0) || (d == 32) || (d == -32)) {
                       finalWord.setCharat(i,elements[k].charat(0));
                       i = i + 1;                           
                       finalWord.setCharat(i,elements[k].charat(1));                           
                       break;
                   } else continue;

               }

               if (((c == 0) || (c == 32) ||(c == -32)) && (elements[k].length() != 2) )   {
                   finalWord.setCharat(i,elements[k].charat(0));
                   break;
               }

               else {
                   finalWord.setCharat(i,word.charat(i));                       
                   break;
               }

           }
           else{
               k++;                 
               
           }
       }
   }       
 
    return finalWord;
}

}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)