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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 傻瓜一点红 于 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循环就不起作用。

评分

参与人数 1技术分 +1 收起 理由
HM汪磊 + 1

查看全部评分

9 个回复

倒序浏览
看了又看,没看懂你这句 String arr[][]=getPrint(n);
回复 使用道具 举报
不喝茶的陆羽 发表于 2013-5-1 20:10
看了又看,没看懂你这句 String arr[][]=getPrint(n);

那句是把返回的数组调用到主函数中来,如果去掉if语句,这个数组是可以打印出来的,就因为加个if语句for循环就全失效了
回复 使用道具 举报
你这个程序是正确的,你可以看看这个图。

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

程序运行截图

程序运行截图
回复 使用道具 举报
hou604720966 发表于 2013-5-1 22:13
你这个程序是正确的,你可以看看这个图。

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

是把用if(){},把for循环包括在里面就用不了,上面打错了一点
回复 使用道具 举报


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

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

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

if问题.jpg
回复 使用道具 举报
hou604720966 发表于 2013-5-2 21:32
如果是附件中说明的话,数组赋值有问题arr[0][0]="1"

不是,那是正确的,检查了很久,问了他们经常编程的才发现是一个细节问题,是if的判断条件是恒不成立的,因为应该写成number,而不是n,下面数组赋值没有错,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马