[英]How to convert ArrayList<String> to char Array and then print each word backwards?
[英]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.