Java:如何以相反的顺序打印输入的字符串数据集?

时间:2014-08-25 21:26:06

标签: java

此程序应输入名称后跟名称“END”的数据集。程序应按照输入的相反顺序打印出数据集中的名称列表。我有什么作品,但如果我输入“Bob Joe Sally Sue”,它会打印出“Sue Sally Joe Bob”的“euS yllaS eoJ boB”。救命啊!?

import java.util.Scanner;
public class ReverseString {
public static void main(String args[]) {

    String original, reverse = "";
    Scanner kb = new Scanner(System.in);

    System.out.println("Enter a list of names, followed by END:");
    original = kb.nextLine();

    int length = original.length();


    while (!original.equalsIgnoreCase("END") ) {
        for ( int i = length - 1; i >= 0 ; i-- )
        reverse = reverse + original.charAt(i);

        original = kb.next();
    }   

    System.out.println("Reverse of entered string is: "+reverse);

    }
}   

3 个答案:

答案 0 :(得分:1)

我认为你需要使用这个简单的算法。实际上你并没有采用正确的方法。

  1. 取整个字符串,其中包含以空格分隔的所有名称;

  2. 使用空格分隔符(使用方法 split

  3. 分割操作后,您将返回一个数组。从末尾(index:array.length-1)循环到start元素(1)并将这些元素保存在另一个字符串中

    public String reverseLine(String currLine) {
      String[] splittedLine = currLine.split(" ");
      StringBuilder builder = new StringBuilder("");
    
      for(int i = splittedLine.length-1; i >= 1; i--) {
           builder.append(splittedLine[i]).append(" ");               
      }
    
      return builder.toString();
    
    }
    
  4. 我认为每行包含所有以空格分隔的名称,最后有一个字符串为“END”

答案 1 :(得分:0)

使用上面评论中建议的方法非常简单,看起来像是:

public static void main(String[] args) {

    Scanner sc = new Scanner(System.in);        
    List<String> names = new ArrayList<>();

    while (sc.hasNext())
    {
        String name = sc.next();
        if (name.equals("END"))
        {
            break;    
        }
        names.add(name);
    }

    Collections.reverse(names);

    for (String name: names)
    {
        System.out.println(name);
    }

    System.out.println("END");    
}

让扫描仪为您提取代币,无需自己动手。

答案 2 :(得分:0)

快速方法,将结果存储在StringBuilder中:

StringBuilber reverse = new StringBuilder();
while (!original.equalsIgnoreCase("END")) {
    reverse.append(new StringBuilder(original).reverse()).append(" ");
    original = kb.next();
}
System.out.println("Reverse: " + reverse.reverse().toString());