黑马程序员技术交流社区

标题: JAVA之双指针思想案例 [打印本页]

作者: 唱歌的蚂蚁1    时间: 2018-1-29 15:36
标题: JAVA之双指针思想案例



把数组中的数据按照指定个格式拼接成一个字符串
* 举例:int[]arr = {1,2,3};        
* 输出结果:[1, 2, 3]
*
* 分析:
*                A:定义一个int类型的数组
*                B:写方法实现把数组中的元素按照指定的格式拼接成一个字符串
*                C:调用方法
*                D:输出结果
*/
publicclass StringTest {
public static void main(String[] args) {
//定义一个int类型的数组
int[] arr = {1,2,3};
//写方法实现把数组中的元素按照指定的格式拼接成一个字符串
//调用方法
String s = arrayToString(arr);

//输出结果
System.out.println("s:"+s);
}
/*
* 两个明确:
*                返回值类型:String
*                参数列表:int[] arr
*/
public static String arrayToString(int[] arr) {
String s = "";
//[1, 2, 3]
s += "[";
for(int x=0; x<arr.length; x++) {
if(x==arr.length-1) {
s += arr[x];
}else {
s += arr[x];
s += ", ";
}
}
s += "]";

return s;
}

字符串反转
* 举例:键盘录入”abc”               
* 输出结果:”cba”
*
* 分析:
*                A:键盘录入一个字符串
*                B:写方法实现字符串的反转
*                        a:把字符串倒着遍历,得到的每一个字符拼接成字符串。
*                        b:把字符串转换为字符数组,然后对字符数组进行反转,最后在把字符数组转换为字符串
*                C:调用方法
*                D:输出结果
*/
publicclass StringTest2 {
public static void main(String[] args) {
//键盘录入一个字符串
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String s = sc.nextLine();

//写方法实现字符串的反转

//调用方法
String result = reverse(s);

//输出结果
System.out.println("result:"+result);
}



/*
* 把字符串倒着遍历,得到的每一个字符拼接成字符串。
*
* 两个明确:
*                返回值类型:String
*                参数列表:String s
*/

/*
public static String reverse(String s) {
String ss = "";

for(int x=s.length()-1; x>=0; x--) {
ss += s.charAt(x);
}

return ss;
}
*/

//把字符串转换为字符数组,然后对字符数组进行反转,最后在把字符数组转换为字符串
public static String reverse(String s) {
//把字符串转换为字符数组
char[] chs = s.toCharArray();

//对字符数组进行反转
for(int start=0,end=chs.length-1; start<=end; start++,end--) {
char temp = chs[start];
chs[start] = chs[end];
chs[end] = temp;
}

//最后在把字符数组转换为字符串
String ss = new String(chs);
return ss;
}
}

StringBuilder:是一个可变的字符串。字符串缓冲区类。
*
* String和StringBuilder的区别:
*                String的内容是固定的。
*                StringBuilder的内容是可变的。
*
* 构造方法:
*                StringBuilder()
*
* 成员方法:
*                publicint capacity():返回当前容量
*                publicint length():返回长度(字符数)
*
*                容量:理论值
*                长度:实际值
*/
publicclass StringBuilderDemo {
public static void main(String[] args) {
//创建对象
StringBuilder sb = new StringBuilder();
System.out.println("sb:"+sb);
System.out.println("sb.capacity():"+sb.capacity());
System.out.println("sb.length():"+sb.length());
}
}

添加功能
*                publicStringBuilder append(任意类型):添加数据,并返回自身对象
* 反转功能
*                publicStringBuilder reverse()

StringBuilder和String的相互转换
*
* StringBuilder -- String
*                publicString toString():通过toString()就可以实现把StringBuilder转成String
*
* String -- StringBuilder
*                StringBuilder(Stringstr):通过构造方法就可以实现把String转成StringBuilder
*/
publicclass StringBuilderTest {
public static void main(String[] args) {
//StringBuilder -- String
/*
StringBuilder sb = new StringBuilder();
sb.append("hello").append("world");

String s = sb.toString();
System.out.println(s);
*/

//String -- StringBuilder
String s = "helloworld";
StringBuilder sb = new StringBuilder(s);
System.out.println(sb);
}
}

把数组拼接成一个字符串
* 举例:
*                int[]arr = {1,2,3};
* 结果:
*                [1,2, 3]
*/
publicclass StringBuilderTest2 {
public static void main(String[] args) {
//定义一个数组
int[] arr = {1,2,3};

//写方法实现拼接

//调用方法
String s = arrayToString(arr);

//输出结果
System.out.println("s:"+s);
}

/*
* 两个明确:
*                返回值类型:String
*                参数列表:int[] arr
*/
public static String arrayToString(int[] arr) {
StringBuilder sb = new StringBuilder();
//[1, 2, 3]
sb.append("[");
for(int x=0; x<arr.length; x++) {
if(x==arr.length-1) {
sb.append(arr[x]);
}else {
sb.append(arr[x]).append(", ");
}
}
sb.append("]");

String result = sb.toString();

return result;
}
}






打印99乘法口诀表在____处补全代码()
外层循环代表行数,内循环代表每行列数

public static void function(){

for (int i = 1; i <=_9___; i++) {

for (int j = 1; j <=__i_; j++) {

System.out.print(i+"*"+j+"="+(i*j)+"\t");
}

System.out.println();
}

}
记得在获取数组中最值得时候,参考值最好设定为 int max=Integer.MIN_VALUE;int min=Integer.MAX_VALUE;
双指针思想,
案例:将一个数组元素反转
Int[] arr={1,2,3,4,5,6,7,8};
For(int start=0,end=arr.length-1;start<end;start++,end--){
Temp=arr[start];
Arr[start]=arr[end];
Arr[end]=temp;


}









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