蓝桥杯练习8+二维数组的复习

蓝桥杯练习8

问题描述如下:小明对数位中含有2,0,1,9的数字很感兴趣(不包括前导0),在1到40中这样的数包括1,2,9,10,至32,39,和40,共28个,他们的和是574。请问,在1到n中,所有这样的数的和是多少
思路:这道题与上题的数的分解类似。
思路:
将int数值类型转换成String类型。用String类的indexOf()方法,判断该数字是否包含“2”,“0”,“1”,“9”这四个字符。
代码展示如下:

package 第十届蓝桥杯大赛决赛题;

import java.util.Scanner;

/*
 * 问题描述:
 * 小明对数位中含有2,0,1,9的数字很感兴趣(不包括前导0),在1到40中这样的数包括1,2,9,10,至32,39,和40
 * ,共28个,他们的和是574。
 * 请问,在1到n中,所有这样的数的和是多少
 * */
public class 特别数的和 {
public static void main(String[] args) {
	//这道题的思路与题数的分解思路相同。
	Scanner sc = new Scanner(System.in);
	try {
		int n=sc.nextInt();
		int sum=0;
		for(int i=1;i<=n;i++) {
			String sc1 = Integer.toString(i);
			if(sc1.indexOf("2")!=-1||sc1.indexOf("0")!=-1||sc1.indexOf("1")!=-1||sc1.indexOf("9")!=-1) {
				sum+=i;
			}
		}
		System.out.println(sum);
	}catch(Exception e) {
		sc.close();
	}
}
}

最近做了一些题,发现JAVA二维数组部分知识都忘了,一下都是我的复习笔记

二维数组为一个特殊的一维数组,其每个元素又是一个一维数组。
声明二维数组的语法如下:
type arr[][];
type [][] arr;
type 表示二维数组的类型,arr 表示数组名称,第一个中括号表示行,第二个中括号表示列。

初始化二维数组

三种语法方式如下:

arr = new type[][]{1,2,3,4,5,……};
arr = new type[][] {new 构造方法(参数列),……};
type[][] arr={{第1行第1列的值,第1行第2列的值,…},{第2行第1列的值,第2行第2列的值,…},…};

使用第二种方式声明 int 类型的二维数组,然后初始化该二维数组。代码如下:

int[][] temp;
temp=new int [][]
{
    {new int(1),new int(2)},{new int(3),new int(4)}
};

使用第三种方式声明 int 类型的二维数组,并且初始化数组。代码如下:

int[][] temp={{1,2},{3,4}};

获取单个元素:

需要获取二维数组中元素的值时,也可以使用下标来表示。语法如下:

array[i-1][j-1];

获取全部元素

在二维数组中,直接使用 length 属性获取的是数组的行数,在指定的索引后加上 length(如 array[0].length)表示的是该行拥有多少个元素,即列数。

例题:

假设有一个矩阵为 5 行 5 列,该矩阵是由程序随机产生的 10 以内数字排列而成。下面使用二维数组来创建该矩阵,代码如下:

package 基础复习;

public class 二维数组 {
public static void main(String[] args) {
	//创建一个二维矩阵
	int[][] matrix = new int[5][5];
	//随机分配值
	for(int i=0;i<matrix.length;i++) {
		for(int j=0;j<matrix[i].length;j++) {
			matrix[i][j]=(int)(Math.random()*10);
		}
	}
	System.out.println("下面是程序生成的矩阵\n");
	//遍历二维矩阵并输出
	for(int k=0;k<matrix.length;k++) {
		for(int g=0;g<matrix[k].length;g++) {
			System.out.print(matrix[k][g]+"");
		}
		System.out.println();
	}
}
}

获取整行元素

获取指定行的元素时,需要将行数固定,然后只遍历该行中的全部列即可。

public static void main(String[] args)
{
    double[][] class_score={{100,99,99},{100,98,97},{100,100,99.5},{99.5,99,98.5}};
    Scanner scan=new Scanner(System.in);
    System.out.println("当前数组只有"+class_score.length+"行,您想查看第几行的元素?请输入:");
    int number=scan.nextInt();
    for(int j=0;j<class_score[number-1].length;j++)
    {
        System.out.println("第"+number+"行的第["+j+"]个元素的值是:"+class_score[number-1][j]);
    }
}

获取整列元素

获取指定列的元素与获取指定行的元素相似,保持列不变,遍历每一行的该列即可。

public static void main(String[] args)
{
    double[][] class_score={{100,99,99},{100,98,97},{100,100,99.5},{99.5,99,98.5}};
    Scanner scan=new Scanner(System.in);
    System.out.println("您要获取哪一列的值?请输入:");
    int number=scan.nextInt();
    for(int i=0;i<class_score.length;i++)
    {
        System.out.println("第 "+(i+1)+" 行的第["+number+"]个元素的值是"+class_score[i][number]);
    }
}```

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值