根据代码画出内存图
- 画出代码的内存调用图
public class Test {
String str=new String("good");
char[] ch={'a', 'b', 'c'};
public static void main(String[] args){
Test t=new Test();
t.change(t.str, t.ch);
System.out.print(t.str+"and");
System.out.print(t.ch);
}
public void change(String str, char[] ch){
str="test ok";
ch[0]='g';
}
}
- 画出代码的内存调用图
public class Test {
public static void main(String[] args){
StringBuffer a=new StringBuffer();
StringBuffer b=new StringBuffer();
mb_operate(a,b);
System.out.println(a+"."+b);
}
static void mb_operate(StringBuffer x, StringBuffer y){
x.append(y);
y=x;
}
}
将一句英语中的每个单词中的字幕次序倒转,单词次序保持不变。
e.g.
输入:There is a dog.
输出:erehT si a god.
我的第一版
public class Test {
public static void main(String[] args){
//1.输入字符串
// String str="There is a dog.";
Scanner sc=new Scanner(System.in);
System.out.print("请输入您需要反转的字符串:");
String str=sc.nextLine();
//2.字符串转为数组
char[] ch=new char[str.length()];
for(int i=0;i<ch.length;i++){
str.getChars(i,i+1,ch,i);
}
// System.out.println(Arrays.toString(ch));
//3.查找空格
char s=' ';
int k=0;
for(int i=0;i<ch.length;i++){
if(ch[i]==s){
k++;
}
}
int[] counts=new int[k+1];
k=0;
for(int i=0;i<ch.length;i++){
if(ch[i]==s){
counts[k]=i;
k++;
}
}
counts[counts.length-1]=ch.length-1;
// System.out.println(Arrays.toString(counts));
//4.实现翻转
char change=' ';
for(int i=0;i<counts.length;i++){
if(counts[i]!=s){
if(i==0){
for(int j=0;j<counts[i]/2;j++){
change=ch[j];
ch[j]=ch[counts[i]-j-1];
ch[counts[i]-j-1]=change;
}
}else{
for(int j=0;j<(counts[i]-counts[i-1])/2;j++){
change=ch[counts[i-1]+1+j];
ch[counts[i-1]+1+j]=ch[counts[i]-1-j];
ch[counts[i]-1-j]=change;
}
}
}
}
// System.out.println(Arrays.toString(ch));
//5.输出
System.out.println(ch);
}
}