可否帮忙看下代码存在的问题(第二次)
来源:8-2 作业题
Protogensis
2018-12-28 14:59:42
import java.util.Scanner;
public class DataManage {
private Scanner sc;
private Scanner sc2;
private static Scanner sc3;
public int[] insert() //插入数据方法
{
sc = new Scanner(System.in);
int[] a=new int[10];
for(int i=0;i<a.length-1;i++) {
System.out.println("请输入第"+(i+1)+"个数据:");
a[i]=sc.nextInt();
if(a[i]<=0)//判断输入值是否为0
{
System.out.println("您所输入的数据不能小于或等于0!");
i--;
continue;
}
}
System.out.println("数组元素为");
for(int i=0;i<a.length-1;i++) {
System.out.print(a[i]+" ");
}
System.out.println();
return a;
}
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) //在指定位置插入数据
{
for(int i=9;i>k;i--) {
a[i]=a[i-1];
}
System.out.println("请输入要插入的数据:");
sc2 = new Scanner(System.in);
n=sc2.nextInt();
if(n==0) {
System.out.println("您所输入的数据不能小于或等于0!");return;
}
System.out.println("请输入要插入的位置:");
k=sc2.nextInt();
if(k<=0||k>a.length) {
System.out.println("您所插入的位置是错误的!");return;
}
a[k-1]=n;
for(int i=0;i<a.length;i++) {
System.out.print(a[i]+" ");
}
System.out.println();
}
public void divThree(int[] a)//查询能被3整除的数
{
int count=0;
System.out.println("数组中能被3整除的数为:");
for(int i=0;i<a.length;i++) {
if((a[i]%3==0)&(a[i]!=0)) {
System.out.print(a[i]+" ");
count+=1;
}
}
if(count==0)
System.out.print("没有能被3整除的数");
System.out.println();
}
public void notice() {
System.out.println("**************************************");
System.out.println("\t1--插入数据");
System.out.println("\t2--显示所有数据");
System.out.println("\t3--在指定位置插入数据");
System.out.println("\t4--查询能被3整除的数据");
System.out.println("\t0--退出");
System.out.println("**************************************");
}
public static void main(String[] args) {
DataManage dm =new DataManage();
sc3 = new Scanner(System.in);
int[] a = null;
int n=0,k=0,length=0;
while(true) {
dm.notice();
System.out.println("请输入对应的数字进行操作:");
int m=sc3.nextInt();
switch(m) {
case 1:
a=dm.insert();length=9;break;
case 2:
dm.showData(a, length);
break;
case 3:
dm.insertAtArray(a,n,k);length=10;break;
case 4:
dm.divThree(a);break;
case 0:
return;//直接退出
default:
System.out.println("您所输入的数字并不存在于列表中!");
}
}
}
}
2回答
insertAtArray()方法插入数据的逻辑还是有问题:
可以定义一个for循环,循环变量i初识值为a.length-1,判断条件是i>=k(k为用户要插入数据的位置); i的值是递减的,循环体中的内容就是把前一个元素的值赋值给后一个元素,即a [i]=a [i-1];这样就达到了移位的效果。循环外将n(n为用户要插入的数据)赋值给a[k]
irista23
2018-12-28
根据之前提供给你的逻辑处理,参考一下如下代码:
for (int i = a.length-1; i >= k - 1; i--) { a[i] = a[i - 1]; } a[k - 1] = n;
相似问题