繁体   English   中英

仅使用1个转换为数组,字符和整数的字符串向后写入单词

[英]Writing a word backwards using only 1 string converted to an array, a character, and an integer

我正在尝试创建一个向后写入数组的代码,并且只能使用数组,字符和整数。 到目前为止,我有这个,但是它什么也没做。 我是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 为了使该程序正常运行,我需要更改什么?

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

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());

好吧,有一件事,我想你想要i<str.length()/2这将给你一半的长度。 如果您说i>=str.length()%2 ,则当其长度除以2时得到的余数-始终为1或0,并且只要i大于1或0就会继续循环。 0。这将导致无限循环。 另外,您不需要变量a,因为它始终等于i。 但是,这有时会导致字符串索引超出范围,但是我将让您找出解决方法。

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

    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循环中的变量。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM