1.一维数组的定义遍历的操作
知识点:
一维数组:
在java中一维数组是一个保存一类大量数据的一个集合,一般对一维数组的访问都是用下标遍历的方式进行访问的。不能扩大容量
一维数组的创建方式:
通过创建对象的方式来创建数组(需要指定对象长度):
int a[] = new = int[10]; //需要指定长度10
int [] a,b = new int[10];//创建两个名为c、b的数组,长度分别为10
给定数组的值(不需要指定长度)
int a[] = new int[]{1,2,3,4};//不能指定数组长度
也可以不实例化数组
int a[] = {1,2,3,4};
一维数组的遍历方式,两种(for循环,for each循环)
for循环
int a[] = {1,2,3,4,5,6};//定义数组
//循环输出数组
for(int i = 0 ; i < a.length(); i++){
System.out.printf(a[i] + " ");
}
输出结果:1 2 3 4 5 6
for each循环
int b[] = {1,2,3,4,5,6};
for(int x : b)
{
System.out.println(x+" ");
}
输出结果:1 2 3 4 5 6
for each的x是临时定义遍历,表示每次循环取b数组中的值
输入类Scanner的创建及使用
Scanner包括在包java.util.*中,所以文件开头要加上import java.util.*;
实例化Scanner类
import java.util.*;
Scanner sc = new Scanner(System.in);
System.in代表创建的是系统输入的对象
使用Scanner赋值
int a = sc.nextInt();
double a = sc.nextDouble();
例题:
1.编写两个方法reverse和isPalindrome。
(1)方法reverse用于返回一个整数的反向倒置数。例如,reverse(123)返回321。
(2)方法isPalindrome判断一个整数是否是回文整数。在此方法中调用reverse方法获得该整数的反向数,如果反向数与它的顺向数一致,则这个数就是回文整数。
调用isPalindrome方法,分别判断123、7117是否是回文整数。
代码如下:
public class project1 {
public static int reverse(int a){
int b=a % 10;//用来存放逆序之后的数
a/=10;
while(a!=0)
{
b*=10;
b+=a%10;
a/=10;
}
return b;
}
public static boolean isPalindrome(int a){
if(a==reverse(a)) return true;
else return false;
}
public static void main(String[] args) {
int a[] = {123,7117};
for(int i = 0; i <a.length;i++){
if(isPalindrome(a[i])) System.out.println(a[i]+"是回文数");
else System.out.println(a[i]+"不是回文数");
}
}
}
运行结果:
这里优化一下逆序函数,可以作为模板记一下
代码如下:
bool check(int a) {
int b = 0;
if(a % 10 == 0)return false;//排除尾部为0的数
while (b < a) {
b = b * 10 + (a % 10);
a = a / 10;
}
return (b == a) || (b / 10 == a);
}
2.编写一个程序,声明一个整型的一维数组arraySearch,存有10个整数:16、44、71、82、3、25、37、98、60、59。程序首先提示用户输入一个要查找的数据,然后在数组arraySearch中查找该数据是否存在,最后输出查找结果,如存在,则输出该数在数组中的位置信息(位置从1开始计数);若不存在,则输出提示信息。
例如,输入数字3,则输出提示信息“该数是数组中的第5个数”;输入数字10,则输出提示信息“未找到该数”。
代码如下:
import java.util.*;
public class work2 {
public static void main(String[] args) {
int search=0;
int mark = 0;
int k =0;
int arraySearch[]={16,44,71,82,3,25,37,98,60,59};
System.out.println("请输入想要查找的数据:");
Scanner sc = new Scanner(System.in);
search = sc.nextInt();
for(int i=0;i<arraySearch.length;i++){
if(search==arraySearch[i]){
mark = 1;
k=i+1;
break;
}
}
if(mark==1) System.out.println("该数据是数组中第"+k+"个数");
else System.out.println("未找到该数据");
}
}
运行结果:
3.编写一个方法,求整数矩阵中特定列的所有元素的和,使用下面的方法头:
public static int sumColumn(int[][] m, int col)
编写一个测试程序,读取3×4的矩阵,然后显示每列元素的和。
代码如下:
import java.util.*;
public class work3 {
public static int sumColumn(int[][] m, int col){
int sum= 0;
for(int i =0;i<m.length;i++){
for(int j =0 ;j<m[i].length;j++){
if(col==j+1) sum+=m[i][j];
}
}
return sum;
}
public static void main(String[] args) {
int count = 0;
int [][] m = new int [3][4];
Scanner sc = new Scanner(System.in);
System.out.println("请输入12个数字");
for(int i=0 ;i<m.length;i++){
for(int j =0;j <m[i].length;j++){
m[i][j] = sc.nextInt();
}
}
for(int i = 1;i<=m.length+1;i++){
count = i;
System.out.println("第"+count+"列的总数和为"+sumColumn(m, count));
}
}
}
运行结果: