标签:数字 can 大小 数组排序 没有 第一个 决定 text http
Java基础语法
今日内容介绍
u 循环练习
u 数组方法练习
题目分析:
通过观察发现,本题目要实现的奇数(范围1-100之间)的累加和。
解题步骤:
代码如下:
public class Test01 {
public static void main(String[] args) {
int sum = 0;
for (int i = 0; i < 100; i++) {
if (i%2==1) {
sum += i;
}
}
System.out.println("累加和的值 " + sum);
}
}
题目分析:
通过观察发现,本题目要实现打印符合要求的数字(即水仙花数)。
即 3位数本身 = 百位数立方 + 十位数立方 + 个位数立方;
解题步骤:
代码如下:
public class Test02 {
public static void main(String[] args) {
for (int i = 100; i < 1000; i++) {
int bai = i/100%10;
int shi = i/10%10;
int ge = i%10;
if (i == bai*bai*bai + shi*shi*shi + ge*ge*ge) {
System.out.println(i);
}
}
}
}
American Standard Code for Information Interchange,美国标准信息交换代码.
在计算机中,所有的数据在存储和运算时都要使用二进制数表示, a、b、c、d这样的52个字母(包括大写)、以及0、1等数字还有一些常用的符号, 在计算机中存储时也要使用二进制数来表示,而具体用哪些二进制数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码),而大家如果要想互相通信而不造成混乱,那么大家就必须使用相同的编码规则,于是美国有关的标准化组织就出台了ASCII编码,统一规定了上述常用符号用哪些二进制数来表示。
数字0-9对应ASCII编码十进制为48-57, 字母a-z对应ASCII编码十进制为97-122,字母A-Z对应ASCII编码十进制为65-90
题目分析:
通过观察发现,本题目要实现打印26个大写字母、26个小写字母
通过ASCII表发现,后面的字母比它前面的字母,ASCII值大1
下一个字母 = 上一个字母 + 1
如: A B C D
65 66 67 68
3. 在每次循环中打印上一个字母大小写,并指定下一个字母
解题步骤:
每次打印完成后,更新大写字母值、小写字母值
代码如下:
public class Test04 {
public static void main(String[] args) {
char da = ‘A‘;
char xiao = ‘a‘;
for (int i = 0; i < 26; i++) {
System.out.println("大写字母 "+da+" ,小写字母 "+xiao);
da++; //更新大写字母值
xiao++; //更新小写字母值
}
}
}
如:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
题目分析:
通过观察发现,如果把1*1=1这样的内容 看做一颗*的话,那么打印结果就成了如下效果:
*
**
***
…
这样,就是打印9行星,每行打印星的个数与当前行数相等。
再观察“1*3=3 2*3=6 3*3=9”得出它们如下的变化规律:
每行第n次 +"*"+ 行号 +"="+ 每行第n次 * 行号
如: 1 +"*"+ 2 +"="+ 1*2; // 相当于1*2=2
2 +"*"+ 2 +"="+ 2*2; // 相当于2*2=4
解题步骤:
System.out.print(k +"*"+ j +"="+ j*k +"\t");
// 变量k代表:每行中的第n次
// 变量j代表:行号
代码如下:
public class Test05 {
public static void main(String[] args) {
for (int j = 1; j < 10; j++) {
for (int k = 1; k <= j; k++) {
System.out.print(k +"*"+ j +"="+ j*k +"\t");
}
System.out.println();
}
}
}
题目分析:
通过观察发现,本题目要实现按照指定格式,打印数组元素操作
解题步骤:
a) 最后一个数组元素,加上一个右边的中括号”]”
b) 非最后一个数组元素,加上一个逗号”,”
代码如下:
//打印数组
public static void printArray(int[] arr) {
System.out.print("[");
for (int i = 0; i < arr.length; i++) {
if (i == arr.length - 1) {
System.out.println(arr[i]+"]");
} else {
System.out.print(arr[i]+", ");
}
}
}
图解:
题目分析:
通过观察发现,本题目要实现原数组元素倒序存放操作。即原数组存储元素为{11,22,33,44},逆序后为原数组存储元素变为{44,33,22,11}。
解题步骤:
代码如下:
//数组元素逆序
public static void receive(int[] arr){
for (int start = 0, end = arr.length-1; start < end; start++,end--) {
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
}
}
图解:
题目分析:
通过观察发现,本题目要实现把数组元素{13,46,22,65,3}进行排序
解题步骤:
a) 进行第一圈元素比较时,要比较的第一个元素为数组第一个元素,即索引为0的元素
b) 进行第二圈元素比较时,要比较的第一个元素为数组第二个元素,即索引为1的元素
c) 依次类推,得出结论:进行第n圈元素比较时,要比较的第一个元素为数组第n个元素,即数组索引为n-1的元素
代码如下:
//选择排序
public static void selectSort(int[] arr) {
//功能
//外层循环用来控制数组循环的圈数
for (int i = 0; i < arr.length-1; i++) {
//内层循环用来完成元素值比较,把小的元素值互换到要比较的第一个元素中
for (int j = i+1; j < arr.length; j++) {
if (arr[i] > arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
图解:数组元素{13,46,22,65,3}
题目分析:
通过观察发现,本题目要实现把数组元素{13,46,22,65,3}进行排序
解题步骤:
a) 进行第一圈元素比较时,内层循环次数为数组长度 - 1
b) 进行第二圈元素比较时,内层循环次数为数组长度 - 2
c) 依次类推,得出结论:进行第n圈元素比较时,内层循环次数为数组长度 - n
代码如下:
//冒泡排序
public static void bubbleSort(int[] arr) {
//功能
//外层循环用来控制数组循环的圈数
for (int i = 0; i < arr.length-1; i++) {
//j < arr.length-1 为了避免角标越界
//j < arr.length-1-i 为了比较效率,避免重复比较
//内层循环用来完成元素值比较,把大的元素值互换到后面
for (int j = 0; j < arr.length-1-i; j++) {
if (arr[j] > arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
图解:
题目分析:
通过观察发现,本题目要实现查找指定数值第一次在数组中存储的位置(索引),返回该位置(索引)。
a) 数值相等,返回当前数组元素值的索引
b) 整个循环结束后,比对结果数值没有相等的情况,说明该数组中没有存储要查找的数值,此时,返回一个索引值-1,来表示没有查询到对应的位置。(使用 -1来表示没有查询到,是因为数组的索引没有负数)
解题步骤:
代码如下:
//普通查找
public static int getArrayIndex(int[] arr, int number) {
//把数组中的元素依次与指定的数值 进行比较
for (int i = 0; i < arr.length; i++) {
if (arr[i] == number) {
//找到了
return i;
}
}
return -1;
}
图解:
题目分析:
通过观察发现,本题目要实现查找指定数值在元素有序的数组中存储的位置(索引),返回该位置(索引)。
再根据新的查询范围,更新最中间元素位置,然后使用中间元素值与要查找的指定数值进行比较
解题步骤:
范围最大索引值 = 上一次中间索引位置 -1;
范围最小索引值 = 上一次中间索引位置 +1;
中间索引值 = (范围最小索引值 +范围最大索引值) / 2;
代码如下:
//二分查找法(折半查找法)
public static int halfSearch(int[] arr, int number) {
//定义3个变量,用来记录min, min, mid的位置
int min = 0;
int max = arr.length-1;
int mid = 0;
while (min <= max) {
mid = (min+max)/2;
//没找了, 更新范围,继续比较
//更新范围
if (arr[mid] > number) {
//在左边
max = mid-1;
} else if(arr[i] < number){
//在右边
min = mid+1;
}
else{
return mid ;
}
return -1;
}
标签:数字 can 大小 数组排序 没有 第一个 决定 text http
原文地址:http://www.cnblogs.com/jmsjh/p/7739911.html