黑马程序员技术交流社区

标题: 怎么把 I love java 转成 java love I [打印本页]

作者: szb    时间: 2015-9-21 10:24
标题: 怎么把 I love java 转成 java love I
怎么把 I love java 转成 java love I   ????请举个实例来说明,谢谢。
作者: 木木三    时间: 2015-9-21 10:36
  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. }
复制代码

作者: meihua    时间: 2015-9-21 13:07
楼上错了的。
要判断
作者: meihua    时间: 2015-9-21 15:30
我也是初学者  我理解然后写的是
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  打印不出来
作者: meihua    时间: 2015-9-21 15:32
meihua 发表于 2015-9-21 15:30
我也是初学者  我理解然后写的是
class Demo
{

知道了,循环条件应该改成 X>=0.之前是的,不知道什么时候吧=删了
作者: 木木三    时间: 2015-9-21 15:43
meihua 发表于 2015-9-21 13:07
楼上错了的。
要判断

哪里需要判断?这个只是针对楼主提出的个例而已。
作者: meihua    时间: 2015-9-21 15:45
木木三 发表于 2015-9-21 15:43
哪里需要判断?这个只是针对楼主提出的个例而已。

你这个输出的是 avaj evol i 吧。
楼主需要的是 java love i
作者: meihua    时间: 2015-9-21 15:46
木木三 发表于 2015-9-21 15:43
哪里需要判断?这个只是针对楼主提出的个例而已。

额,可能是我没懂。还没有学到正则表达式。我试试你的代码。恩,可能是我没搞清楚
作者: 木木三    时间: 2015-9-21 15:56
meihua 发表于 2015-9-21 15:46
额,可能是我没懂。还没有学到正则表达式。我试试你的代码。恩,可能是我没搞清楚 ...

确定试过我的代码了?你说的是反转吧,reverse用的是字符数组,我用的是字符串数组,切割方法学字符串就有了,只是原理没讲,是后面的正则。
作者: 插兜    时间: 2015-9-21 15:57
还没学到正则表达式
作者: boboyuwu    时间: 2015-9-21 16:03
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 21:59
本帖最后由 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
复制代码



作者: xiaoya0o0o    时间: 2015-9-21 22:11
路过,学习下
作者: ZZBY    时间: 2015-9-21 22:17
我的思路是用正则表达式根据“ ”空格切割成为三个元素
存储在数组中,反向打印数组
作者: 残影    时间: 2015-9-21 22:31
学习了。。。好多高手啊。。。
作者: 天涯莫名    时间: 2015-9-21 22:31
最近在学集合,把I,love,you当作三个字符串对象放到集合里,就可以很简单的实现
作者: sniper170fly    时间: 2015-9-21 23:04

  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. }
复制代码



作者: 放飞邹莺    时间: 2015-9-21 23:22
boboyuwu 发表于 2015-9-21 16:03
package test;

import java.util.Iterator;

学习的好透彻,不过你的和楼主的一个字符串是不一样的哦,,
你是三个字符串;




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2