用while重复提示输入第1个数据,不用while如何再次输入不同项

用while重复提示输入第1个数据,不用while如何再次输入不同项

package homework;
import java.util.Scanner;
public class DateManage {
	//插入数据
	public  int[] insertData(int arr[]) {
		for (int i = 1; i < arr.length; i++) {
			System.out.println("请输入第"+i+"个数据:");
			Scanner sc = new Scanner(System.in);
			arr[i-1]=sc.nextInt();
		}
		return arr;		
	}
	
	//显示所有数据//显示几个数据
	public void showData(int arr[],int length) {
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i]+"  ");
		}
		System.out.println();
	}
	
//	//在指定位置处插入数据//要插入的数据插入数据的位置
//	public void insertAtArray(int[] a,int n,int k) {		
//	}
//	
//	//查询能被3整除的数据
//	public void divThree(int[] a) {		
//	}
	
	//显示提示信息
	public void notice() {
		System.out.println("**********************************");
		System.out.println("           1--插入数据                                   ");
		System.out.println("           2--显示所有数据                           ");
		System.out.println("           3--在指定位置处插入数据            ");
		System.out.println("           4--查询能被3整除的数据             ");
		System.out.println("           0--退出                                          ");
		System.out.println("**********************************");
		System.out.println("请输入对应的数字进行操作:                                   ");
	}
	
	public static void main(String[] args) {
		int arr[] = new int[10]; 		
		DateManage d = new DateManage();
		d.notice();
		Scanner sc = new Scanner(System.in);
		Integer k = sc.nextInt();
		while (k!=0) {
			switch (k) {
			case 1:
				d.insertData(arr);
				d.showData(arr,arr.length);
				d.notice();
				break;
			}
		}			
	}
}


正在回答

登陆购买课程后可参与讨论,去登陆

3回答

你好同学,如果不用while循环可以按照如下代码进行修改,在while循环外将k的值赋值为-1,这样就能进入while循环,然后在while循环内接收用户从键盘录入的数据,这样就不会循环插入数据了,祝学习愉快~

http://img1.sycdn.imooc.com//climg/5c89c40c00019e1b05020126.jpg

chrismorgen 2019-03-13 18:34:00

你好同学,建议你不要在return语句后添加run方法,return之后的代码是不能被执行的,所以才会报错哦,另外我针对同学的代码进行了修改,同学可以看一下,如果有什么不明白的地方,可以和我讨论一下哦,祝学习愉快~

package homework;

import java.util.Scanner;

public class DateManage {
    // 插入数据
    public int[] insertData(int arr[]) {
        for (int i = 1; i < arr.length; i++) {
            System.out.println("请输入第" + i + "个数据:");
            Scanner sc = new Scanner(System.in);
            arr[i - 1] = sc.nextInt();
        }
        return arr;
    }

    // 显示所有数据//显示几个数据
    public void showData(int arr[], int length) {
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + "  ");
        }
        System.out.println();
        run();
    }

    // //在指定位置处插入数据//要插入的数据插入数据的位置
    // public void insertAtArray(int[] a,int n,int k) {
    // }
    //
    // //查询能被3整除的数据
    // public void divThree(int[] a) {
    // }

    // 显示提示信息
    public void notice() {
        System.out.println("**********************************");
        System.out.println("           1--插入数据                                   ");
        System.out.println("           2--显示所有数据                           ");
        System.out.println("           3--在指定位置处插入数据            ");
        System.out.println("           4--查询能被3整除的数据             ");
        System.out.println("           0--退出                                          ");
        System.out.println("**********************************");
        System.out.println("请输入对应的数字进行操作:                                   ");
    }

    public static void main(String[] args) {
        run();

    }
    static int arr[] = new int[10];
    public static void run(){
    
        DateManage d = new DateManage();
        d.notice();
        Scanner sc = new Scanner(System.in);
        Integer k = sc.nextInt();

        switch (k) {
        case 1:
            arr = d.insertData(arr);
            d.showData(arr, arr.length);
            d.notice();
            break;
        case 2:
            d.showData(arr, arr.length);
            break;
        }
    }
}


  • 提问者 慕哥5118177 #1
    谢谢!再请问下,我贴在主题里的代码,我是用while的,但是插入数组元素后,又重复出现“请输入第1个数据”,这是为什么?我断点debug看了,switch-1-插入数据-return-break后,回到while,这时k还是1,于是又重复1了,是这么个运行顺序吧?
    2019-03-13 19:28:50
  • 提问者 慕哥5118177 #2
    在用while的情况下,如何不重复出现“请输入第1个数据”呢?
    2019-03-13 19:30:07
吃吃吃鱼的猫 2019-03-13 13:33:52

 同学你好,你提出的问题已解决,详情在下面图片中已标出,具体可以看下面图片。

http://img1.sycdn.imooc.com//climg/5c88961a0001b66f06430441.jpg

http://img1.sycdn.imooc.com//climg/5c8896370001403608290256.jpg

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~


  • 提问者 慕哥5118177 #1
    老师, 1、不用while的情况下,按你给的编码,我插入完数据,显示完提示信息,break出循环了,再按2不能输入数字。 2、用while的情况下,我还是不知道怎样,才能在插入完9个数组元素后,避免再次出现“请输入第一个数字”的提示?
    2019-03-13 14:34:37
  • 提问者 慕哥5118177 #2
    1、Sorry,不用while的情况下,我刚才漏了run(),但InsertData方法的return arr后加run(),报错了。
    2019-03-13 14:40:25
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师