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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

这是我已经做好的程序,现在想通过在命令行窗口,通过输入字符串“stop”来终止该程序。
以下是程序代码:

  1. /**
  2. 需求:
  3.         提供方法add(int i),该方法可以给数组中的元素赋值,通过该方法可以无限次的给数组添加元素
  4.         (不考虑内存溢出)
  5. 提示
  6.         在class Demo{
  7.                 static int[] arr = new int[10];
  8.                 static int index = 0;
  9.         }
  10.         在Demo类中增加一个方法add(int i);

  11.         add(int i){
  12.                 arr[index++] = i;
  13.         }

  14. 1、数组的遍历
  15. 2、多个引用指向同一对象
  16. 3、计数器

  17. 分析:         方法add(int i)可以给数组中的元素进行赋值,并无限次地给数据添加元素
  18.                  即:i以新元素的模式加在数组[]的末端。
  19.         实施方法:
  20.         A:返回值类型:空参数,直接在方法中输出;参数列表:arr[],int i;add(int[] arr,int i)
  21.                 1.方法add中从数组角标0开始赋值,达到最大角标之后,若还有新的i输入,则增大数组长度,并将新i赋值到数组中
  22.                 2.上述过程需判断从角标0开始输入的数字i的位置index<arr.length ?
  23.                         true:        arr[index++]=i;
  24.                         false:        增大数组长度:定义方法extendArray(int[] arr);返回新数组arr1;
  25.                                         arr1[arr.length]=i;
  26.                 3.i为用户录入的数据,可以创建键盘录入方法,input(),返回值类型为int 即为i
  27.                 4.方法extendArray(int[] arr);创建新数组arr1[x];x=arr.length+1;同时把arr中的各个元素赋值给arr1;
  28.                 5.为了让程序持续输入输出,在add方法中递归;       
  29.         B:需要对数组进行输出,定义方法printArray(int[] arr);

  30. */

  31. import java.util.Scanner;
  32. class AddArrayElementDemo
  33. {
  34.         /**
  35.         add(int[] arr,int i):给数据赋值并可添加元素方法add,
  36.         arr:        为要赋值并添加元素的数组
  37.         i:                要录入的元素
  38.         */
  39.         static int index = 0;//输入数据对应的数组角标;
  40.         public static void add(int[] arr, int i)
  41.         {       
  42.                 //判断角标与数组长度的大小,若角标小,则对数组中对应角标元素赋值
  43.                 //若角标大,则增加数组的长度,并对增加后的数组新元素进行赋值,同时角标+1;
  44.                 if (index < arr.length)
  45.                 {
  46.                         arr[index++]=i;
  47.                         printArray(arr);//打印数组
  48.                         add(arr,input());//继续执行输入数据
  49.                        
  50.                 }
  51.                 else
  52.                 {
  53.                         int[] arr1 = extendArray(arr);//增加数组长度
  54.                         arr1[arr1.length-1] = i;//对增加后的新元素赋值
  55.                         index++;
  56.                         printArray(arr1);
  57.                         add(arr1,input());//继续执行输入数据
  58.                        
  59.                 }
  60.         }
  61.         /**
  62.         键盘录入方法input();
  63.         */
  64.         public static int input()
  65.         {
  66.                 Scanner sc = new Scanner(System.in);
  67.                 System.out.println("请输入需要添加的数字元素:");
  68.                 int i = sc.nextInt();
  69.                 return i;
  70.         }
  71.        
  72.         /**
  73.         将原有数组长度增加1的方法
  74.         */
  75.         public static int[] extendArray(int[] arr)
  76.         {
  77.                 //新建数组,长度为原有数组长度+1
  78.                 int[] arr1 = new int[arr.length+1];
  79.                 //将原有数组对应元素赋值给新数组
  80.                 for (int x=0; x<arr.length; x++)
  81.                 {
  82.                         arr1[x]=arr[x];
  83.                 }
  84.                
  85.                 return arr1;
  86.         }
  87.         /**
  88.         输出数组方法
  89.         */
  90.         public static void printArray(int[] arr)
  91.         {
  92.                 for (int i=0; i<arr.length; i++)
  93.                 {
  94.                         System.out.print(arr[i]+" ");
  95.                 }
  96.                 System.out.println();
  97.         }
  98.        
  99.         //主函数
  100.         public static void main(String[] args)
  101.         {       
  102.                 int x = 4;
  103.                 int[] arr = new int[x];
  104.                 int i = input();
  105.                 add(arr,i);
  106.         }
  107. }

  108. /*


  109. 需求:在命令窗口可以通过输入:"stop"终止程序


  110. */
复制代码

7 个回复

倒序浏览
本帖最后由 大西洋 于 2015-4-23 23:27 编辑
  1. //在main方法的最下面写:

  2.                 System.out.println("请您输入 exit 退出程序");
  3.                 Scanner scan = new Scanner(System.in);
  4.                 String exit = scan.next();
  5.                 if( exit == "exit"){
  6.                     System.exit(0);
  7.                 }
复制代码
回复 使用道具 举报
键盘录入方法input();
        */
        public static int input()
        {
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入需要添加的数字元素:");
                int i = sc.nextInt();
                return i;
        }



改后
  1. 键盘录入方法input();
  2.         */
  3.       public static int input()
  4.         {
  5.                 Scanner sc = new Scanner(System.in);
  6.                 System.out.println("请输入需要添加的数字元素:");
  7.                
  8.                         String st=sc.nextLine();
  9.                         if(st.equals("stop")){
  10.                                 System.exit(0);
  11.                         }
  12.                           int i = sc.nextInt();
  13.                                         return i;
  14.                
  15.                
  16.             
  17.         }
复制代码
回复 使用道具 举报
好长啊 !!!!!!
回复 使用道具 举报

亲,你这个方法是不行的,如果在main方法的最下面写这些代码的话,还是会无限循环添加数组元素的
回复 使用道具 举报

非常感谢
如果输入“stop”确实会结束程序,不过程序有个瑕疵,运行时要输入两组数据,第一次输入的是判断是否为stop停止语句,第二个是要添加的元素,有些麻烦,可不可以只输入一组数据来进行判断?
回复 使用道具 举报
Dylon 中级黑马 2015-4-24 23:05:12
7#
gc278161209 发表于 2015-4-24 21:57
好长啊 !!!!!!

可以慢慢看:lol
回复 使用道具 举报
要么将输入的i改成String类型的再转int;要么设置一个特定值使循环停掉,我就想到这两点。
把add(arr,input())这方法里的input()抽出来用局部变量赋值后面接个判断再扔进去
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马