Java初学者问题,请教前辈谢谢(向数组中插入元素)

作者&投稿:赏卖 (若有异议请与网页底部的电邮联系)
怎么向JAVA数组中插入元素,本人初学者,总是不明白,搞不懂,哪位大神帮忙说明下,举个简单的例子,~

你指的是向已经有数据的数组中插入数据,还是说先声明一个空数组,在插入数据啊?
如果时第二种(拿int数组来举例):
int [] a = new int[5]; // 声明一个int数组a,并且长度为5
// 一个一个的向数组中插入数据,注意数组下标是从0开始数的
a[0] = 1;
a[1] = 1;
a[2] = 1;
a[3] = 1;
a[4] = 1;

public static void main(String[] args) throws IOException {
System.out.println("添加元素方法开始");
String[] arr=add();
System.out.println("添加后数组元素是:");
printArr(arr);
System.out.println("获取指定位置元素方法开始");
System.out.println(getIndex(arr));
System.out.println("删除元素方法开始");
arr=delete(arr);
System.out.println("删除后数组元素是:");
printArr(arr);
}

public static String[] add() {
Scanner sc=new Scanner(System.in);
System.out.println("请输入数组元素个数,回车确认");
int n=Integer.parseInt(sc.nextLine());
System.out.println("请输入数组元素,回车确认");
String[] arr=new String[n];
for(int i=0; i < n; i++) {// 循环,从控制台读数据放到数组里
arr[i]=sc.nextLine();
}
return arr;
}

public static String[] delete(String[] arr) {
Scanner sc=new Scanner(System.in);
System.out.println("要删除第几个元素?(数组脚标从0开始),回车确认");
int n=Integer.parseInt(sc.nextLine());
String[] tmp=new String[arr.length - 1];
if(n >= arr.length) {
System.out.println("脚标超出数组长度,删除失败");
return arr;
}
for(int i=n; i < arr.length - 1; i++) {
arr[i]=arr[i + 1];// 从位置n开始,后面的元素覆盖前面的元素
}
for(int i=0; i < arr.length - 1; i++) {
tmp[i]=arr[i];// 将数组赋值给新数组,不要最后一个元素,因为数组长度-1了
}
return tmp;
}

public static String getIndex(String[] arr) {
Scanner sc=new Scanner(System.in);
System.out.println("要获取第几个元素?(数组脚标从0开始),回车确认");
int index=Integer.parseInt(sc.nextLine());
if(index >= arr.length) {
System.out.println("指定位置超出数组大小");
return null;
} else {
System.out.println("获取到的是:");
return arr[index];
}
}

public static void printArr(String[] arr) {
for(int i=0; i < arr.length; i++) {
System.out.print(arr[i] + ",");
}
System.out.println();
}

刚刚才看懂你代码的意思!

好吧!你的代码是要将自己输入的歌名插入自己定义的String[]musics数组中!这里你通过比较歌名的字母(忽略大小写)的大小来将这个歌名插入到指定的位置!

  1. 所以你要完成成这个功能那么代码中的index只能为musics.length,否则你插入到String[]musics数组中个名将不会按字母的大小顺序插入到newmusics 数组中的(也就是说你插入到newmusics 数组里的歌名就不会按字母大小排好序了)!

2.是从newmusics 数组将最后一个元素(该元素为空)将它移到你输入的歌名所要插入的位置!然后将你输入的歌名放在该空位置上!

3.你是想问for循环语句里的变量int i吧!它出了for循环就没人认识他了,也就是说他只在for循环里有用

补充点:其实楼主所谓的后移是将newmusics 数组最后一个元素(该元素为空,因为没赋值吗!)往前移了,所以在最后一个元素的前面的元素就相当于往后移了!至于那个空元素移到哪里要看你输入的歌曲名字了!因为newmusics[index]=music;这句代码就完成你将输入的歌曲名插入到那个空元素所移到的位置。



1,因为int index=musics.length下面你要用到 index=i的时候跳出循环,newmusic[index]=music;index其实就是musics.length的值!
2.下标后移举个例子当前i为2 也就是数组上第三个位置 newmusics[2]=newmusics[1];把第二个位置上的值赋给第三个位置上,这就是元素后移!
3.因为你的元素不是公共的!当你没有在外部定义变量的时候,只有在当前大括号内定义属性的话,他仅限在当前大括号内用!出了这个大括号他就没有值了,除非你在外部首先定义他的变量!这样的话就可以通用!例如public static void main(){
int num=0;
for(int i=0;i<=10;i++){
num=num+i;
}
system.out.println(num);
}
如果不在外部定义int num的话,输出就应该写在for大括号里面!

  1. int index=musics.length或者int index=0在这里都是可以的,因为在这句之后,后面的index=i这句赋值之前,index没有被引用到,所以这里赋值为什么都是可以的。

  2. 这个循环是倒置循环,看到i--没有。这是从最后一个数开始后移一位,然后倒数第二个后移一位,知道插入后的数值这个位置。然后再执行newmusics[index]=music。这样就把空出来的这一位放入你要插入的值,这就是插入操作了。比如有5个位置。1,2,3,4,[空]。我现在要在2和3之间插入5。那么,我先把4移到5的位置,把3移到4的位置,那么就是1,2,[空],3,4了。这时只要把3的位置赋值为5就是1,2,5,3,4了。倒置移动的好处就是减少移动量。你可以找一下相关资料,面试很喜欢考这个。因为这样效率高。

  3. 没有通不通用的说法,你要定义一个全局i也可以,注意i起的作用就是相当于一个指针,一直移动,不同的for都有自己的移动轨迹。了解?



(1)musics.length这个是数组的长度,这个后面有个index=i再次赋值了,
(2)形象一点就是你现在有a1=1,a2=2,a3=3,然后你让a3=a2,a2=a1,结果不就是a3=2,a2=1,这就相当于元素后移了一个位置。
(3)for里面的元素是局部变量,也就在for那个{}里面才有效,你可以在for外面定义i,那样就几个for循环的i就是通用的了


新人,ava怎么练枪法
那么楼主需要注意的只有几点 1、听声 很重要 这里的声音和其他游戏有区别 那就要考楼主自己多练习 判断 2、 心态 也很重要 当你接触这款游戏时 请把以前那些游戏的习惯改掉 列如爆头 这里面的爆头对于初学者不重要 而且遇见敌人 首先要沉得住气 千万别慌 一慌枪就乱 这是必然的 初学时 跑步的...

在java中怎样从键盘输入数字(新手问题)
ava初学者,一定对从键盘输入数据感到困难,使用下面的类Input,可以 方便的从键盘输入数据:使用方法举例: String s=Input.readString(); 读入字符串 int i=Input.readInt(); 读入整数 下面是java输入输出基本类Input类的源代码:最后以从键盘输入10个整数为例说明之。import java.io.*;class Input...

AVA爱华MT4平台模拟账户和真实账户有什么区别
模拟账户是给外汇交易的初学者用的,注册模拟账户后,可以用虚拟金币,但是在平台里看到的,是和真实的市场报价。所以建议初学者在开账户之前还是用模拟账户先练习练习吧,不用担心赔钱。

avaxt杀毒软件效果怎么样啊?
avast!,国内的查杀率明显低于国外,但监控很全面,对破解软件和注册机报毒较多。没有卡巴好,但卡巴占CPU太多,配置一般的电脑会不太流畅。AVAST防护比金山、瑞星好,但查杀率低了点。因为技术上比不上卡巴,又没有瑞星那么大的病毒库。优点是免费,有中文版。麦咖啡很复杂,不适合初学者,你就别考虑...

AVA战地之王AK74M和AN94哪个好用
力推AN94,说94 LJ的是是不会玩,没有LJ的枪,只有LJ的玩家,AK74M是蹲射强力,但起来就完蛋了,但AN94站着蹲着都好点,第一发子弹,准确度仅次于狙击,连射不要过3发,并且是平行移动射击,千万不要跳。BS 复制党!

我是飞刀初学者,求会飞刀的高手教导下,怎么出刀飞刀是直飞而不是旋飞...
直飞谈何容易,建议先转飞,时间长了再直飞,不过你 转飞时间长了自然就明白直飞了,但要勤学苦练,直飞难...真想学的话加我吧 qq569915389 要有决心不然就不必加了.

零基础如何学习Java?
零基础要怎么学Java ?相信这是很多初学者入门Java都需要考虑担心的问题,根据我自己过来的学习经验,我的看法是这样的:一:先作为初学者,我们要了解Java能做什么?1、web开发,应用场景最多的一个分支。具体有哪些呢,最常见的就是淘宝,京东等等2、安研发,应用排行第二。具体的应用有哪些?所有的安手机上...

AVA 虎纹AK和F2000 这两把枪,哪个比较好?都用过的请说下,谢谢,太纠结...
。都是人民币的枪,好了我玩战地也有1年多了,给楼主解释下吧,先说虎纹,现在改版后应该都是m4a1的天下了,虎纹的攻击力是高但是稳定性稍差,我觉得没有原来的ak好爆头,不太适合初学者用,但是虎纹的外观很拉风的,很招人喜欢,fn2000这把枪简直就是神器,超高的稳定,不错的输出,很适合新手来...

杀毒软件AVA和AVG可以一起用吗
你起码先把监控不兼容这个问题说清楚先。你可以关闭AVG的监控,然后一起用。木马木马,你最多弄个木马专杀,金山贝壳专杀、360顽固木马专杀就行了。难道你经常中木马吗?木马也是病毒的一种,大部分木马都会被杀毒软件消灭。比如说1楼,混合2个软件,确实查杀率高了,但是误报率也高了起码20%,而且,...

java该怎么自学?
写一个Hello ?World,其实JDK的学习没有那么简单,关于JDK有两个问题是很容易一直困扰Java程序员的地方:一个是CLASSPATH的问题,其实从原理上来说,是要搞清楚JRE的ClassLoader是如何加载Class的;另一个问题是package和import问题,如何来寻找类的路径问题。把这两个问题摸索清楚了,就扫除了学习Java和使用JDK的最大障碍...

墨脱县15828917896: java 新手问题 -
住具丙谷: 1、属性下的第一个方法或类中的第一个方法不一定定义的就是构造方法 2、类的结构其实是可以自己随便定义的 不过考虑到开发习惯通常是:属性、构造方法、普通方法3、构造方法 在实际的工作之中其实通常是为类中的属性做初始化的(赋值) 4、去掉具体有没有影响 还得看你所定义的某一个类的作用 和 自己的需求5、对于定义类:可以提供多个无参构造方法 但是建议至少保留一个无参构造方法6、对于某些框架的设计其实构造方法的作用是非常大的 因为框架的设计玩的几乎都是反射 而反射就会牵扯都构造方法问题

墨脱县15828917896: java初学者问题,请教前辈 谢谢 -
住具丙谷: Scanner input=new Scanner(System.in); System.out.println("请输入单词:"); String word =input.next(); System.out.println(word); word=word.toLowerCase();//将单词转换成小写 int y=0,f=0;//元音个数y 辅音个数f 初始化 为0 char [] ...

墨脱县15828917896: java初学者遇到的解决不了的问题,求大神指教! -
住具丙谷: 其实你就不应该把学号定义为Student类型 你应该定义成int类型或者long 但更推荐在Score类中添加Student属性 通过score.getStudent().getStuId()获取学号 不过,你在调用有参构造的时候,必须传入Student对象,而不只是传入学号...

墨脱县15828917896: 我是一个java的初学者,有个问题弄不明白,谁可以告诉我. -
住具丙谷: parseInt(String ) 这个方法是带参数的,参数为string类型的 比如你这样定义 int n=Integer..parseInt("123"); 可以了

墨脱县15828917896: java初学者的问题,请前辈指教,谢谢 -
住具丙谷: 将 public boolean search(String name){ boolean find=false; for(int i=0;i if(names[i].equals(name)){ find=true; break; } } return find; }改成 public boolean search(String name){ boolean find=false; for(int i=0;i if(name.equals(names[i])){ find=true; ...

墨脱县15828917896: 小白如何学好java? -
住具丙谷: 建议一:有系统的学习方案,系统的学习教程,先把Java学了一遍之后才是真正的入门,然后就是不断的练习,不断的巩固,为之后的工作打下坚实的基础.建议二:学习Java不要先看书学,一定要先把一块的知识点学完一遍,并且自己多多少...

墨脱县15828917896: java入门问题 -
住具丙谷: 不管你基础怎么样,不管你学什么语言,就一句话,多动手多上机多看多写代码多做项目 多动手多上机:这个能提高你的动手编程能力,不要只顾着在纸上写写画画的,没用的 多看:一看别人写的代码,来提高自己,明白自己的不足,可以去CSDN上下载,很多资源的;二看java视频教程,介绍几个,张孝祥java就业培训,孙鑫老师的,还有韩顺平的 多写代码多做项目:多写这个不用多说了,多做项目也不一定说必须做那种公司里面写的大项目,你可以写写比如啥记事本啊,日记本啊信息管理系统啥的,按着一定的步骤写着项目流程. 希望以上几点对你有帮助...

墨脱县15828917896: JAVA初学者问题
住具丙谷: 当然是从java程序设计开始的. 你要先熟悉javase的基本语法然后才能继续深入学习其他的javaee和javame. 注意,从05年出了jdk1.5以后,都改名为javaee了,旧版才叫j2ee

墨脱县15828917896: 本人非计算机专业学生,目前正想学习JAVA,有几个问题想请教! 1.学JAVA -
住具丙谷: 是的,建议买java编程思想(第四版),这本书挺好,对于刚入门来说例子有点难,不过例子很棒

墨脱县15828917896: java新手问题 -
住具丙谷: java7是java-version的版本为1.7开头的java版本.java中没有这种表达方式吧:catch(ArithmeticException | ArrayIndexOutOfBoundsException e)定义一个exception类型就可以编译通过了.int a=10,b=0; ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网