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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胡高德 中级黑马   /  2012-10-11 22:45  /  3119 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 胡高德 于 2012-10-12 08:34 编辑

/*
需求:将字符串中进行反转。abcde --> edcba
*/
class Demo
{
public static void main (String []args){
  
  method ();
  method1();
  
}
public static void method(){

  String str="abcde";
  for(int i = 0;i<str.length();i++){
   
    char c=str.charAt(i);
   
   System.out.println(c);
  }
}
public static void method1(int[] str){
   
   
   for(int start=0,end=str.length-1;start<end;start++,end--){
   
    int tmp= str[start];
    str[start]=str[end];
    str[end]=tmp;
   
   }
}
}
/*
运行提示错误:
Demo.java:6: 找不到符号
符号: 变量 str
位置: 类 Demo
     method1(str);
       ^
1 错误
*/

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

12 个回复

倒序浏览
str是method的局部变量,是有范围的
回复 使用道具 举报
  1. class Demo {
  2.         static String str = null;

  3.         public static void main(String[] args) {
  4.                 method();
  5.                 method1(str.toCharArray());
  6.         }

  7.         public static void method() {
  8.                 str = "abcde";
  9.                 for (int i = 0; i < str.length(); i++) {
  10.                         char c = str.charAt(i);
  11.                         System.out.print(c);
  12.                 }
  13.                 System.out.println();
  14.         }

  15.         public static void method1(char[] str) {
  16.                 for (int start = 0, end = str.length - 1; start < end; start++, end--) {
  17.                         char tmp = str[start];
  18.                         str[start] = str[end];
  19.                         str[end] = tmp;
  20.                 }
  21.                 for (int i = 0; i < str.length; i++) {
  22.                         char c = str[i];
  23.                         System.out.print(c);
  24.                 }
  25.         }
  26. }
复制代码
给你稍做了一点修改  你看看吧

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 cehkongfu 于 2012-10-11 22:57 编辑

class Demo
{
public static void main (String []args){
  method ();
  char str[]={'a','b','c','d','e'};
  method1(str);
}
public static void method(){
  String str="abcde";
  for(int i = 0;i<str.length();i++){
   char c=str.charAt(i);
   System.out.println(c);
  }
}
public static void method1(char[] str){
  for(int start=0,end=str.length-1;start<end;start++,end--){
  char tmp= str[start];
  str[start]=str[end];
  str[end]=tmp;
  }
  for(char ch:str )
   System.out.println(ch);
}
}

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
楼主  你看以上代码 是否可行
回复 使用道具 举报
method1()的参数是int数组。。。
回复 使用道具 举报
曾浩 中级黑马 2012-10-11 23:28:20
7#
1.str是定义在method方法中的局部变量 在method1中是访问不到str的
2.method1 是一个有参数的方法 你在调用时没有传参数啊
回复 使用道具 举报
1、method1()函数需要传入int[]数组,但main里什么也没传;

2、需求要把5个字母反转,那在method()中,就不能再按照正向顺序去打印了,可以试试用下面的for循环下:
  for(int i = str.length()-1;i>=0;i--)
回复 使用道具 举报
胡建彪 黑马帝 2012-10-12 07:53:36
9#
楼主的 method1()方法是一个带有参数int [] str的方法,当眼要在主函数中调用的时候要传递相应的参数进去啊。 所以编译通不过。
回复 使用道具 举报
谢谢各位。解决了
回复 使用道具 举报
胡建彪 黑马帝 2012-10-12 08:30:31
11#
柏占肖 发表于 2012-10-11 22:56
给你稍做了一点修改  你看看吧

感觉将char [] chars = str.toCharArray(); 这句话放在 method1() 方法里更好,然后再主函数中就直接写成
String  str="abcde";
method(str);
method1(str);
回复 使用道具 举报
胡建彪 发表于 2012-10-12 08:30
感觉将char [] chars = str.toCharArray(); 这句话放在 method1() 方法里更好,然后再主函数中就直接写 ...

嗯  不错
回复 使用道具 举报
Method方法中的str在Method1中访问不了,是局部变量

而且楼主遍历字符串写的太麻烦,使代码看起来很臃肿
字符串每个字符可以直接用char ch =strs[i];存储

整个程序可以直接使用for循环反序输出就行了
for(int i=strs.Length-1;i=0;i--)
{
     char ch = strs[i];
     CW();
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马