请老师帮助修改下。
package imooc;
import java.util.Scanner;
public class DataManage {
int[] intArray=new int[10];
DataManage dm=new DataManage();
int s;
// 显示提示信息的方法
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 int[] insertData(){
Scanner sc=new Scanner(System.in);
if (sc.nextInt()==0){
System.out.println("不能输入数字0,请重新输入");break;
}
else
for(int i=0;i<intArray.length;i++ ){
intArray[i]=sc.nextInt();
}
return intArray[];
}
//显示数据的方法
public void showData(int[] intArray, int length){
for(int i=0;i<intArray.length;i++ ){
System.out.print("数组元素为:" +intArray[i]+"");
dm.notice();
}
}
//查询能被3整除的数据
public divThree{
for(int i=0;i<intArray.length;i++ ){
if (intArray[i]%3==0){
System.out.print("能被3整除的数据是" intArray[i]);
}
}
}
// 指定位置处插入数据
public void insertAtArray(int[]intArray){
int a,b;
System.out.println("请输入要插入的数据");
Scanner sc=new Scanner(System.in);
a=sc.nextInt();
System.out.println(" 请输入要插入的位置");
Scanner sc=new Scanner(System.in);
b=sc.nextInt();
for(int i = intArray.length-1;i > a;i--)
{
intArray[i] = intArray[i-1];
}
intArray[a] = b;
System.out.println(Arrays.toString(intArray));
}
public static void main(String[]args){
dm.notice();
Scanner sc=new Scanner(System.in);
s=sc.nextInt();
switch(s){
case 0:
System.out.println("退出");
case 1:
System.out.println("1-插入数据");
s.insertData();break;
case 2:
System.out.println("2-显示数据");
s. showData(int[]intArray, int length);break;
case 3:
System.out.println("3-在指定位置处插入数据");
s.insertAtArray(int[] intArray);break;
case 4:
System.out.println("4-查询能被3整除的数据");
s.divThree();break;
}
}
}
}
正在回答 回答被采纳积分+1
同学你好,对同学的程序修改如下:
语法方面:
1、notice()方法缺少“}”,需要加上。
2、insertData()中如果没有else语句,去掉else,return intArray,不需要[]。
3、该类的对象dm建议定义在主方法中,而显示数据的方法中不需要调用notice()方法。
4、查询能被3整除的数据的方法。方法定义:访问修饰符 +返回值类型+方法名+(参数列表)+方法体。同学的该方法缺少返回值类型和参数列表,即使参数列表为空,但是括号()不能省。
5、insertAtArray()方法中Scanner对象定义一个即可,另外不可重名。
6、insertAtArray()最后的输出语句没有作用还报错,建议去掉。
7、主方法中,该类的对象定义在主方法中。s变量在主方法中使用,也在主方法中定义。
8、case 0后退出程序可以使用System.exit(0);
9、调用该类中的方法应该用该类的对象dm调用,如dm.insertData()。
10、如果intArray数组在类中定义,要在主方法中使用,需要讲intArray数组定义为静态的。
11、最后多了一个“}”。
程序逻辑方法。
1、主方法中建议使用循环结构和switch-case结构,循环结构保证程序只有输入0才推出,输入其他数字则一直执行。如果输入的数字没有对应的操作,可使用default:输出提示。
2、插入数据的方法。在该方法中使用循环接收从键盘输入的数字,如果输入的数据为0,将i--,调用continue结束当前循环执行下次循环。
3、显示数据的方法要考虑两种情况,在指定位置插入数据前和后,,分别显示9个或10个数据,以保证不显示0。
4、查询能被3整除的数据的方法。当没有能被3整除的数据时,也要给出提示。
可参考如下代码:
public class DataManage {
// 显示提示信息
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 int[] insertData() {
int[] arr = new int[10];
arr[9] = 0;
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 9; i++) {
System.out.println("请输入第" + (i + 1) + "个数据:");
int num = sc.nextInt();
if (num == 0) {
System.out.println("数据不合法,请输入非零的数!");
i--;
continue;
}
arr[i] = num;
}
return arr;
}
// 显示所有数据
public void showData(int[] a, int length) {
System.out.println("数组元素为:");
for (int i = 0; i < length; i++) {
System.out.print(a[i] + " ");
}
System.out.println();
}
public void insertAtArray(int[] a, int n, int k) {
if (a[a.length - 1] != 0) {
System.out.println("数组存储空间已满!");
} else {
if (k == 9) {
a[9] = n;
} else {// 从插入位开始将数据整体后移
for (int i = a.length - 2; i >= k; i--) {
a[i + 1] = a[i];
}
a[k] = n;
}
}
}
// 查询能被3整除的数据
public void divThree(int[] a) {
boolean flag = false;
System.out.println("能被3整除的数据为:");
for (int n : a) {
if (n % 3 == 0) {
System.out.print(n + " ");
flag = true;// 如果查找成功设为true
}
}
if (!flag) {// 若查找失败,输出提示信息
System.out.println("没有找到能被3整除的数据!");
}
System.out.println();
}
public static void main(String[] args) {
int[] arr = new int[10];
int length = 9;// 执行选项1后设值为9,执行选项3后设值为10
DataManage dm = new DataManage();
Scanner sc = new Scanner(System.in);
while (true) {
dm.notice();
int sel = sc.nextInt();
switch (sel) {
case 1:
arr = dm.insertData();
length = 9;// 执行选项1后设值为9
break;
case 2:
dm.showData(arr, length);
break;
case 3:
System.out.println("请输入要插入的数据:");
int n = sc.nextInt();
System.out.println("请输入要插入数据的位置:");
int k = sc.nextInt();
if (k < 0 || k > 9) {
System.out.println("输入不合法,请输入0-9");
break;
}
dm.insertAtArray(arr, n, k);
length = 10;// 执行选项3后设值为10
break;
case 4:
dm.divThree(arr);
break;
case 0:
System.out.println("程序退出!");
return;
default:
System.out.println("输入有误,请重新输入");
}
}
}
}如果我的回答解决了你的疑惑,请采纳。祝:学习愉快!
相似问题
登录后可查看更多问答,登录/注册
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星