【问题标题】:how to inverse a string如何反转字符串
【发布时间】:2015-11-26 17:45:22
【问题描述】:

我有这个来自学校的作业,但是我不确定我做错了第二个数组没有采用第一个数组的值,你能帮帮我吗?

public static void main(String[] rpp) {

        String[] word = new String[7];        
        word[0] = "D";
        word[1] = "E";
        word[2] = "N";
        word[3] = "T";
        word[4] = "I";
        word[5] = "S";
        word[6] = "T";        

        String[] inverseWord = new String[7];
        inverseWord[0] = "";
        inverseWord[1] = "";
        inverseWord[2] = "";
        inverseWord[3] = "";
        inverseWord[4] = "";
        inverseWord[5] = "";       


        for(int x = word.length;x <= 0;x--){
            for(int y = 0;y <= word.length;y++){
                inverseWord[y] = word[x];                
            }            
        }        
        System.out.print(Arrays.toString(inverseWord) + "\n");
    }

【问题讨论】:

  • Reverse a string in Java的可能重复
  • 这是十几个其他反向字符串问题的重复,您是否甚至在寻找现有答案?
  • 我认为他是在问如何修复他的代码,而不是在寻求替代解决方案。
  • 常见的用法是将迭代器值命名为ijk、...,而不是xy,除非它们作为坐标有特殊含义。跨度>

标签: java arrays


【解决方案1】:

数组索引从 0 开始。这意味着如果长度为 L,则数组中的最后一个索引将是 (L-1)。

这意味着你需要写int x = word.length - 1而不是int x = word.length,而不是y &lt;= word.length你需要写y &lt; word.lengthy &lt;= word.length - 1

另外,外循环中的条件应该是x &gt;= 0,而不是x &lt;= 0

【讨论】:

    【解决方案2】:
    1. 您不需要两个 for 循环
    2. x应该大于等于0不小于

    public static void main(String[] rpp) {
        String[] word = new String[7];
        word[0] = "D";
        word[1] = "E";
        word[2] = "N";
        word[3] = "T";
        word[4] = "I";
        word[5] = "S";
        word[6] = "T";
    
        String[] inverseWord = new String[7];
        inverseWord[0] = "";
        inverseWord[1] = "";
        inverseWord[2] = "";
        inverseWord[3] = "";
        inverseWord[4] = "";
        inverseWord[5] = "";
    
        for (int x = word.length - 1; x >= 0; x--) {
            inverseWord[(word.length-1) - x] = word[x];
        }
        System.out.print(Arrays.toString(inverseWord) + "\n");
    }
    

    【讨论】:

      【解决方案3】:

      外部 for 循环的条件应该是

      x >= 0

      【讨论】:

        【解决方案4】:

        用2个变量重写用于反转的for循环。这是最简单最基本的方法。

         for(int i=word.length-1,int j=0;i>=0,j>=0;i--,j++) //loop for reversing
                    {
                        inverseWord[j] = word[i];
                    }
        
            for(int i=0;i>=0;i++) // for displaying the inverseword array
            {
            System.out.print(inverseWord[j];
            }
        

        【讨论】:

          【解决方案5】:

          您可以使用 StringBuilder 将单个字符附加到字符串中。使用 String 类中的 charAt 方法和 for 循环,可以将字符串 "DENTIST" 分解为相反顺序的字符。

          public class MainClass {
          
              public static void main(String[] args) {
                  String word = "DENTIST";
                  StringBuilder inverseWord = new StringBuilder();
          
                  for (int i = word.length()-1; i >= 0; i--) {
                      inverseWord.append(word.charAt(i));
                  }
                  System.out.println(inverseWord);
          
              }
          
          }
          

          【讨论】:

          • 老实说,如果我已经使用StringBuilder,那么我会使用String inverseWord = new StringBuilder(word).reverse().toString(); 并且我已经完成了。
          猜你喜欢
          • 1970-01-01
          • 2010-09-30
          • 2016-01-06
          • 1970-01-01
          • 2012-06-26
          • 1970-01-01
          • 2014-02-26
          相关资源
          最近更新 更多