黑马程序员技术交流社区

标题: 新手请教:一个奇怪的问题,函数返回数组,不能在... [打印本页]

作者: 傻瓜一点红    时间: 2013-5-1 19:55
标题: 新手请教:一个奇怪的问题,函数返回数组,不能在...
本帖最后由 傻瓜一点红 于 2013-5-2 09:14 编辑

之前在论坛了看到了如下这道题,试着去做了一下,用函数调用的方法,结果遇到一个纠结的问题
  1. /*效果如下:随便输入一自然数2,打印出如下:
  2.                                 * * * *
  3.                                 * 1 2 *
  4.                                 * 3 4 *
  5.                                 * * * *
  6.                                 如输入3,打印效果如下:
  7.                                 * * * * *
  8.                                 * 7 8 9 *
  9.                                 * 6 1 2 *
  10.                                 * 5 4 3 *
  11.                                 * * * * *
  12. */
  13. import java.util.Scanner;
  14. public class test
  15. {
  16.         public static void main(String[] args)
  17.         {
  18.                 Scanner in=new Scanner(System.in);//创建一个输入接收对象;
  19.                 System.out.println("请输入你需要的数字(需正整数):");
  20.                 int number=in.nextInt();
  21.                 int n=number+2;//n代表数组长度变量
  22.                 String arr[][]=getPrint(n);
  23.                 /*if(n==1)
  24.                         arr[1][1]="1";*/
  25.                         for(int i=0;i<n;i++)
  26.                         {
  27.                                 for(int j=0;j<n;j++)
  28.                                 {
  29.                                         System.out.print(arr[i][j]+"\t");
  30.                                 }
  31.                                 System.out.println("\n");
  32.                         }
  33.         }
  34.         public static String[][] getPrint(int n) //定义一个输出*号的共用函数
  35.         {        
  36.                 String arr[][]=new String[n][n];
  37.                 for(int i=0;i<n;i++)
  38.                 {
  39.                         for(int j=0;j<n;j++)
  40.                         {
  41.                                 arr[i][j]="*";
  42.                         }
  43.                 }
  44.                 return arr;
  45.         }
  46. }
复制代码
以上代码中定义了一个共用函数getPrint,然后返回这个二维数组,结果是在主函数main调用的时候,只要加上个if语句,主函数下面的for循环语句就全部没用了:L,这是怎么回事,只有注释掉if语句,下面for循环才起作用,求大虾指教?
备注:不管if语句是采用如上形式,还是采用{}把for循环包含在里面,for都不起作用,意思就是只有有if语句,for循环就不起作用。
作者: 不喝茶的陆羽    时间: 2013-5-1 20:10
看了又看,没看懂你这句 String arr[][]=getPrint(n);
作者: 傻瓜一点红    时间: 2013-5-1 20:12
不喝茶的陆羽 发表于 2013-5-1 20:10
看了又看,没看懂你这句 String arr[][]=getPrint(n);

那句是把返回的数组调用到主函数中来,如果去掉if语句,这个数组是可以打印出来的,就因为加个if语句for循环就全失效了
作者: hou604720966    时间: 2013-5-1 22:13
你这个程序是正确的,你可以看看这个图。

__S3K[38@]F)XWUO)D~JLER.jpg (60.92 KB, 下载次数: 0)

程序运行截图

程序运行截图

作者: 傻瓜一点红    时间: 2013-5-1 22:36
hou604720966 发表于 2013-5-1 22:13
你这个程序是正确的,你可以看看这个图。

发现没,if后面的那赋值语句不起作用,如果用if(){},把for循环包含在里面,for循环就不起作用了,不知道是怎么回事
作者: 曾德强    时间: 2013-5-1 22:42
你这段代码,包括加上if都能运行;求详情
作者: 傻瓜一点红    时间: 2013-5-1 23:47
曾德强 发表于 2013-5-1 22:42
你这段代码,包括加上if都能运行;求详情

是把用if(){},把for循环包括在里面就用不了,上面打错了一点
作者: 曹睿翔    时间: 2013-5-2 07:53


如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢
作者: hou604720966    时间: 2013-5-2 21:32
傻瓜一点红 发表于 2013-5-1 22:36
发现没,if后面的那赋值语句不起作用,如果用if(){},把for循环包含在里面,for循环就不起作用了,不知 ...

如果是附件中说明的话,数组赋值有问题arr[0][0]="1"

if问题.jpg (82.17 KB, 下载次数: 0)

if问题.jpg

作者: 傻瓜一点红    时间: 2013-5-2 22:34
hou604720966 发表于 2013-5-2 21:32
如果是附件中说明的话,数组赋值有问题arr[0][0]="1"

不是,那是正确的,检查了很久,问了他们经常编程的才发现是一个细节问题,是if的判断条件是恒不成立的,因为应该写成number,而不是n,下面数组赋值没有错,谢谢




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