A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© szb 中级黑马   /  2015-9-21 10:24  /  908 人查看  /  20 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

怎么把 I love java 转成 java love I   ????请举个实例来说明,谢谢。

20 个回复

倒序浏览
  1. class TestDemo{
  2.         public static void main(String[] args){
  3.                 String str = "I love java";
  4.                 String[] arr = str.split(" "); //正则切割字符串转成字符串数组
  5.                 StringBuffer sb = new StringBuffer(); //定义字符串缓冲区接收新字符串
  6.                 for(int x=arr.length-1; x>=0; x--){
  7.                         sb.append(arr[x]); //倒序添加字符串。
  8.                         if(x!=0){ //补上空格
  9.                                 sb.append(" ");
  10.                         }
  11.                 }
  12.                 System.out.println(sb.toString()); //重新打印
  13.         }
  14. }
复制代码

点评

好方法。学些了。谢谢大神。  发表于 2015-9-21 13:08
回复 使用道具 举报 1 0
楼上错了的。
要判断

点评

我觉得用ArrayList可能好一些。  发表于 2015-9-21 14:00
回复 使用道具 举报
我也是初学者  我理解然后写的是
class Demo
{
        public static void main(String[] args)
        {
                String str="I love java";
                char[] arr=str.toCharArray();
                StringBuilder sb1=new StringBuilder();
               
                for (int x=arr.length-1;x>0 ;x-- )
                {
                        StringBuilder sb2=new StringBuilder();
                        if (x!=0)
                        {
                                if (arr[x]==' ')
                                {
                                for (int y=x+1;y<arr.length-sb1.length() ;y++ )
                                {
                                        if (arr[y]!=' ')
                                        {
                                                sb2.append(arr[y]);
                                        }
                                       
                                }
                                sb1.append(sb2);
                                sb1.append(" ");
                                                               
                                }
                        }
                        if (x==0)
                        {
                                sb1.append(arr[0]);
                        }
                       
                }
                System.out.println(sb1.toString());

        }
}
  但不知道为什么  I  打印不出来

点评

x>=0  发表于 2015-9-21 22:22
x>=0  发表于 2015-9-21 22:22
回复 使用道具 举报
meihua 发表于 2015-9-21 15:30
我也是初学者  我理解然后写的是
class Demo
{

知道了,循环条件应该改成 X>=0.之前是的,不知道什么时候吧=删了
回复 使用道具 举报
meihua 发表于 2015-9-21 13:07
楼上错了的。
要判断

哪里需要判断?这个只是针对楼主提出的个例而已。
回复 使用道具 举报
meihua 中级黑马 2015-9-21 15:45:12
7#
木木三 发表于 2015-9-21 15:43
哪里需要判断?这个只是针对楼主提出的个例而已。

你这个输出的是 avaj evol i 吧。
楼主需要的是 java love i
回复 使用道具 举报
meihua 中级黑马 2015-9-21 15:46:16
8#
木木三 发表于 2015-9-21 15:43
哪里需要判断?这个只是针对楼主提出的个例而已。

额,可能是我没懂。还没有学到正则表达式。我试试你的代码。恩,可能是我没搞清楚
回复 使用道具 举报
meihua 发表于 2015-9-21 15:46
额,可能是我没懂。还没有学到正则表达式。我试试你的代码。恩,可能是我没搞清楚 ...

确定试过我的代码了?你说的是反转吧,reverse用的是字符数组,我用的是字符串数组,切割方法学字符串就有了,只是原理没讲,是后面的正则。
回复 使用道具 举报
还没学到正则表达式
回复 使用道具 举报
package test;

import java.util.Iterator;
import java.util.LinkedList;
import java.util.ListIterator;

public class demo {

        public static void main(String[] args) {
                LinkedList<String> link=new LinkedList<String>();
        link.add("I");
        link.add("Love");
        link.add("java");
        Iterator<String> it=link.iterator();
        while(it.hasNext()){
               
                System.out.print(link.removeLast()+" ");
        }
        }

}
回复 使用道具 举报
本帖最后由 fmi110 于 2015-9-21 22:02 编辑
meihua 发表于 2015-9-21 15:30
我也是初学者  我理解然后写的是
class Demo
{
  1. class Temp {
  2.         public static void main(String[] args) {
  3.                 String str = "I Love      Java";
  4.                 // 按空格将字符串切割,空格后的加号 表示有一个或者多个空格
  5.                 String[] ss = str.split(" +");
  6.                 System.out.println("切割后得到的字符串为:");
  7.                 for (int i = 0; i < ss.length; i++) {
  8.                         System.out.println(ss[i]);
  9.                 }
  10.                 // 逆序拼接字符串,实现单词倒叙
  11.                 String line = "";
  12.                 for (int i = ss.length - 1; i >= 0; i--) {
  13.                         line = line + ss[i] + " ";
  14.                 }
  15.                 System.out.println("倒序后的字符串:\r\n" + line);
  16.         }
复制代码
  1. 切割后得到的字符串为:
  2. I
  3. Love
  4. Java
  5. 倒序后的字符串:
  6. Java Love I
复制代码


回复 使用道具 举报
路过,学习下
回复 使用道具 举报
ZZBY 中级黑马 2015-9-21 22:17:11
14#
我的思路是用正则表达式根据“ ”空格切割成为三个元素
存储在数组中,反向打印数组
回复 使用道具 举报
学习了。。。好多高手啊。。。
回复 使用道具 举报
最近在学集合,把I,love,you当作三个字符串对象放到集合里,就可以很简单的实现
回复 使用道具 举报

  1. /**
  2. * 字符串翻转
  3. * @author Adam
  4. *
  5. * 1、先把字符串拆分,写入ArrayList集合中,然后反向打印
  6. */

  7. import java.util.*;

  8. class ReflectDemo
  9. {
  10.         public static void main(String[] args) {
  11.                
  12.                 //输入字符串
  13.                 String str = "I love Java";
  14.                 //定义ArrayList集合
  15.                 LinkedList al = new LinkedList();
  16.                 //把字符串拆分
  17.                 String regex = " ";
  18.                 String[] arrStr = str.split(regex);
  19.                 for(String s1:arrStr)
  20.                 {
  21.                         al.addFirst(s1);
  22.                 }
  23.                 Iterator it = al.iterator();
  24.                 while(it.hasNext())
  25.                 {
  26.                         System.out.print(it.next()+" ");
  27.                 }
  28.                
  29.         }
  30. }
复制代码


回复 使用道具 举报
boboyuwu 发表于 2015-9-21 16:03
package test;

import java.util.Iterator;

学习的好透彻,不过你的和楼主的一个字符串是不一样的哦,,
你是三个字符串;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马