使用spaces.going通过for循环反转一个字符串

时间:2017-04-19 22:46:42

标签: java string reverse

在本练习中,我要反转一个字符串。我能够使它工作,虽然它不适用于空格。例如,Hello只会输出olleH。我尝试过像被注释掉的东西,却无法让它发挥作用。

import java.util.Scanner;

class reverseString{
  public static void main(String args[]){
    Scanner scan = new Scanner(System.in);
    System.out.print("Enter a string: ");
    String input = scan.next();
    int length = input.length();
    String reverse = "";
    for(int i = length - 1; i >= 0; i--){
        /*if(input.charAt(i) == ' '){
            reverse += " ";
        }
        */
        reverse += input.charAt(i); 
    }
    System.out.print(reverse);
}
}

有人可以帮忙解决这个问题,谢谢。

2 个答案:

答案 0 :(得分:2)

您的reverse方法是正确的,您正在呼叫Scanner.next(),其中只读取一个字(下次打印input)。对于您所描述的行为,请更改

String input = scan.next();

String input = scan.nextLine();

答案 1 :(得分:0)

您也可以这样初始化扫描仪:

Scanner sc = new Scanner(System.in).useDelimiter("\\n");

这样它就可以使用换行符来界定输入。

使用这种方法,您可以使用sc.next()来获取String中的整行。

<强>更新

正如documentation所说:

  

扫描程序使用分隔符模式将其输入分解为标记,分隔符模式默认匹配空格。然后可以使用各种下一种方法将得到的标记转换为不同类型的值。

从同一页面获取的示例:

  

扫描仪还可以使用空格以外的分隔符。此示例从字符串中读取几个项目:

String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");
System.out.println(s.nextInt());
System.out.println(s.nextInt());
System.out.println(s.next());
System.out.println(s.next());
s.close(); 
     

打印以下输出:

     

1
     2
     红
     蓝色

所有这些都是使用useDelimiter method

制作的

在这种情况下,您希望/需要阅读整行,那么您的useDelimiter必须有一个允许读取整行的模式,这就是您可以使用\n的原因,所以你可以这样做:

Scanner sc = new Scanner(System.in).useDelimiter("\\n");