【问题标题】:Writing a word backwards using only 1 string converted to an array, a character, and an integer仅使用 1 个转换为数组、字符和整数的字符串向后写一个单词
【发布时间】:2014-01-01 19:15:58
【问题描述】:

我正在尝试创建一个向后写入数组并且只能使用数组、字符和整数的代码。到目前为止,我有这个,但它没有做任何事情。我是java 的初学者。

import javax.swing.JOptionPane;
public class TestingArraysUsingOneArray
{
   public static void main(String args[])
   {
      {
      String str = JOptionPane.showInputDialog("Enter any text that you want to reverse.");
      char[] charArray = str.toCharArray();
      char current;
      int a = 0;
      for (int i = 0; i>=str.length()%2; i++) {
         current = str.charAt(a);
         charArray[a] = str.charAt(str.length()-a);
         charArray[str.length()-a] = current;
         a++;
      }
      System.out.println(charArray);
      }
   }
}

当我输入hello 时,我得到的输出是hello。我需要进行哪些更改才能使该程序正常运行?

【问题讨论】:

  • 你需要更好地解释你的家庭作业。
  • 我发誓这不是家庭作业,而是我父亲给我的一个挑战。另外,反正我在放寒假。
  • 让我们将家庭作业重新定义为您在专业领域没有得到报酬的事情。此外,您需要向我们提供更多详细信息。

标签: java arrays string integer


【解决方案1】:

您不需要一半的代码。我会尽量使它尽可能简单。试试这个

String str = ...
for(int i = str.length() - 1; i >= 0;  i--)
    System.out.print(str.chatAt(i));
System.out.println();

如果作业说你必须反转一个字符数组,你可以这样做。

String str = ...

char[] chars = str.toCharArray();
for(int i = 0; i < chars.length/2; i++) {
    char ch = chars[i];
    chars[i] = chars[chars.length - i - 1];
    chars[chars.length - i - 1] = ch;
}
System.out.println(new String(chars));

正如您所见,这不必要地复杂,因此您不会这样做。如果您不想使用循环,另一种方法是

String str = ...

System.out.println(new StringBuilder(str).reverse());

【讨论】:

  • 我一开始就是这样做的,但我爸爸说有办法通过替换数组中的字符来做。
【解决方案2】:

嗯,一方面,我认为你想要i&lt;str.length()/2 - 这会给你一半的长度。如果你说i&gt;=str.length()%2,当它的长度除以 2 时,你得到的余数总是 1 或 0,只要 i 大于 1 或 0,循环就会继续。这应该导致无限循环。此外,您不需要变量 a,因为它始终等价于 i。然而,这有时会导致字符串索引超出范围,但我会让你弄清楚如何解决这个问题。

【讨论】:

    【解决方案3】:

    你的for循环永远不会进入,因为它应该是i &lt; str.length(),因为在i为0的那一刻,当前的检查将立即失败。

    设置该条件后,您需要将str.length()-a 的两个实例更改为str.length()-a-1,因为当a 为0 时str.length-a 将导致StringIndexOutOfBoundException,因为您可以访问的最大索引为str.length-1

    这些只是对现有代码的更正。有一种更好,更简洁的方法可以反转另一个答案中建议的字符串,这是您应该接受的。

    【讨论】:

      【解决方案4】:

      您要做的是将第一个字符替换为最后一个字符,依此类推..

          char[] charArray = str.toCharArray();
          char current;
      
          for (int i = 0; i < charArray.length / 2; i++) {
           current = charArray[i];
           charArray[i] = charArray[charArray.length - i - 1];
           charArray[charArray.length - i - 1] = current;
          }
      

      a int 是完全多余的,它将是您代码中的第二个 int - 不要忘记 for 循环中的变量。

      【讨论】:

        猜你喜欢
        • 2020-01-03
        • 1970-01-01
        • 2013-11-27
        • 2018-01-08
        • 2015-01-03
        • 1970-01-01
        • 1970-01-01
        • 2017-11-03
        • 1970-01-01
        相关资源
        最近更新 更多