在Java中反转字符串(循环)直到“完成”

zpqajqem  于 2023-03-16  发布在  Java
关注(0)|答案(5)|浏览(139)

这是我正在做的课堂实验。这是说明:编写一个程序,它接受一行文本作为输入,然后反向输出这行文本。程序重复,当用户为这行文本输入“完成”、“完成”或“d”时结束。
例如:如果输入为:
“你好啊

完成”
输出为:
“埃雷特奥莱
是的”
这是我现在所拥有的

public class LabProgram {
   public static void main(String[] args) {
      /* Type your code here. */
      Scanner scnr = new Scanner(System.in);
      String[] inputs = new String[100];
      String input;
      int i = 0;
      while (true) {
         input = scnr.nextLine();
         if(input.equals("Done") || input.equals("done") || input.equals("d"))
            break;
      inputs[i] = input;
      i++;
         }
      for (int j = 0; j < i; j++) {
         int length = inputs[j].length();
         String reverse = "";
         for (int k = length - i; k >= 0; k--) {
            reverse = reverse + inputs[j].charAt(k);
         }
         System.out.print("\n" + reverse);
      }
   }
}

Current output
我到底做错了什么?

kzmpq1sx

kzmpq1sx1#

遍历数组,并在每个索引处反转元素。这个解决方案很耗时,但可以完成您的工作

for (int j = 0; j < inputs.lenght; j++) {
     int length = inputs[j].length();
    char a;
    String rev = "";
    for(int i =0; i< length; i++){
        a = inputs[j].charAt(i);
        rev = a + rev;   
    }
     System.out.println(rev);
  }
lf5gs5x2

lf5gs5x22#

  • 尝试使用StringBuilder并使用反向方法-- @Artur Todeschini

为了补充Artur所说的,StringBuilder的ArrayList可以很好地完成这个任务:

for(StringBuilder nextEntry : stringBuilderList)
{
    nextEntry.reverse();
}

增强的for循环将遍历ArrayList中的每个条目,而StringBuilder的反向操作将更改字母的顺序。

编辑以显示格式

ArrayList<StringBuilder> stringBuilderList= new ArrayList<>();

*注意。考虑到这是一个实验,它可能是为了学习的目的,使用内置的类来为你做所有的工作通常不是预期的解决方案。-- @experiment unit 1998 X

v7pvogib

v7pvogib3#

尝试使用StringBuilder并使用方法反转

b1payxdu

b1payxdu4#

这是另一个“ArrayList和StringBuilder-less”版本。创建两个String,一个填充,一个空:

String nextString = stringArray[i], 
    template = new String();

循环遍历String的长度,每次到时从末尾添加中的下一个字符。

int length = nextString.length() - 1;
for(int j = 0; j < length; j++)
{
    template += nextString.charAt(length - j);
}

将整个String添加到String数组的索引中

stringArray[i] = template;

这是String数组的内部循环,不是完整的代码

v09wglhw

v09wglhw5#

您的打印行只需要反转 * 系统输出打印(reverse +“\n”);*
您有 * 系统输出打印(“\n”+反向);*

相关问题