作为一个编程初学者,看到班级的大神学习的效率和方法,让我在平时的学习中感到了很大压力。为了更快的入门,老师同学的建议都是多练习,因为在他们看来,"键盘敲烂月薪过万"是每个人程序员都应该遵守的铁律.的确,作为初学者,练习固然重要,但是比起代码的练习,我觉得更重要的是逻辑思维的练习.java基础的东西很好理解,白天听不懂的内容,可以通过课下查资料看视屏完全可以弄懂.但是,一时半会弄不明白的是逻辑思维上的东西.因为有一句话叫做"少见多怪,见多不怪".见得东西多了,自然就不会大惊小怪.其实很多时候重要的不是代码的速度敲得有多块,代码敲了有多少,而是逻辑思维练习多少才是最重要的,比如,前几天老师上课讲到数组有很多小细节没有讲到,但是完全可以通过自己课下的练习来获得新的知识和思维.我在课下时遇到过这样的一个问题:首先输入几个数字作为int数组的元素,然后再输入一个角标删除某一个位置的元素.刚看到时我一脸茫然,数组的删除?没学过啊,怎么写?不会.然而,在同学的提示下我很快完成了这个所谓的难题:他说:数组的删除其实就是把后面的一个角标覆盖掉前面一个数字,这样看来就很简单了.方法如下[AppleScript] 纯文本查看 复制代码 package myday06;
import java.util.*;
public class ArrayDelete{
public static void main(String args[]){
System.out.println("请用键盘输入5个数:");
int [] array =new int[10];
Scanner sc=new Scanner(System.in);
//通过键盘向数组输入数
for(int i=0;i<array.length-5;i++){
array[i]=sc.nextInt();
}
//遍历数组
System.out.print("原数组为:");
for(int a:array){
System.out.print(" "+a);
}
//删除在指定位置的数字
System.out.println("\n输入你要删除的位置: 范围在0---"+(array.length-1));
int index=sc.nextInt();
delete(index,array);//调用delete方法
//删除之后的遍历
System.out.println("删除之后的遍历:");
for(int i=0;i<array.length;i++){
System.out.print(" "+array[i]);
}
}
//数组的特性是,一旦初始化,则长度确定,所以要删除数组中元素,并且长度也随着删除而改变,则要重新建立数组
/**
*删除方式1
*/
public static int[] delete(int index, int array[]) {
//数组的删除其实就是覆盖前一位
int[] arrNew = new int[array.length - 1];
for (int i = index; i < array.length - 1; i++) {
array[i] = array[i + 1];
}
System.arraycopy(array, 0, arrNew, 0, arrNew.length);
return arrNew;
}
/**
*删除方式2
*/
public int[] delete2(int index, int array[]) {
//数组的删除其实就是覆盖前一位
int[] arrNew = new int[array.length - 1];
for (int i = 0; i < array.length - 1; i++) {
if (i < index) {
arrNew[i] = array[i];
} else {
arrNew[i] = array[i + 1];
}
}
return arrNew;
}
} 其实,两种方法的做法的偶濮水一样的因为数组的长度不能改变,所以为了防止有一个位置的元素是空的,将其放入了一个新的数组,这样看起来就像是直接删除了一个元素.所以,在平时的学习中最主要的是根据特性来完成需要的操作
|
|