JAVA学习笔记(5)
一、二维数组的定义:
1.int[][]arr = {{1,2},{3,4}};
2.int[][]arr = new int[][]{{1,2},{3,4}};
3.int[][]arr = new int[2][2];
二维数组的遍历:
1.for语句:
for(int i=0;i<arr.length;i++){//行数
for(int j=0;j<arr[0].length;j++){
System.out.print(arr[i][j]+” ”);
}
System.out.println();
}
2.foreach语句:
for(int[] value:arr){
for(int a:value){
//a
}
}
3.Arrays.deepToString(arr);
eg:1.输出
public class Test2 {
public static void printTran(int n){
int[][] arr = new int[n][n];
for(int i=0;i<arr.length;i++){//控制行
for(int j=0;j<arr[i].length;j++){//控制列数
//1.第一列全部为1 2.对角线元素都是1
if (j== 0||i== j){
arr[i][j] = 1;
}else if(i-1 >= 0) {
//3.当前元素是上一行同一列元素值+1
arr[i][j] = arr[i - 1][j] + 1;
}
}
}
for(int i=0;i<arr.length;i++){//行数
for(int j=0;j<=i;j++){
System.out.print(arr[i][j]+"");
}
System.out.println();
}
}
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入:");
int n = scanner.nextInt();
printTran(n);
}
}
2.顺时针打印矩阵
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
public class TestDemo1 {
public static void main(String[] args) {
int[][] arr = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int circle = arr[0].length/2;
int count = 0;
while(count<circle){
//上
for(int colum = count;colum < arr[0].length-count;colum++){
System.out.print(arr[count][colum]+" ");
}
//右
for(int row = count+1;row < arr.length-count;row++){
System.out.print(arr[row][arr[0].length-1-count]+" ");
}
//下
for(int colum = arr[0].length-1-1-count;colum > count;colum--){
System.out.print(arr[arr.length-1-count][colum]+"");
}
//左
for(int row = arr.length-1-count;row >= count+1.;row--){
System.out.print(arr[row][count]+" ");
}
count++;
}
}
}
二、二维数组的拷贝:
int[][] brr = new int[arr.length][arr[0].length];
1.
for(int i=0;i<arr.length;i++){//行
for(int j=0;j<arr[i].length;j++){//列
brr[i][j] = arr[i][j];
}
}//常用
2.int[][] brr = Arrays.copyOf(arr,arr.lenrth);(浅拷贝)
for(int i=0;i<arr.length;i++){
//1.brr[i] = Arrays.copyOf(arr[i],arr[i].length);
//2.brr[i] = arr[i].clone;
//3.System.arraycopy(arr,0,brr,0,arr.length,arr[0].length);
}
eg:
输入一个英文单词顺序,反转句子中单词的顺序,但单词内字符的顺序不变。
为简单起见,标点符号和普通字母一样处理,例如输入“i am a student”,输出"student a am i"。
public class HomeWork4 {
public static void main(String[] args) {
String str = "i am a student";
//str转成字符串数组
String[]arr = str.split(" ");
for(int i=0;i<arr.length/2;i++){
String temp = arr[i];
arr[i] = arr[arr.length-1-i];
arr[arr.length-1-i] = temp;
}
String result = "";
System.out.println(Arrays.toString(arr));
for(int i=0;i<arr.length;i++){
result = result+arr[i]+" ";
}
System.out.println(result);
}
}
- 题目:字符串转整型:例如给一个数字字符串。
“123”转成数字123
"-123"转成数字-123
“–123”转成数字123
“a -+ 123”
public class HomeWork2 {
public static int getCount(char[] ch){
int count = 0;
for(int i=0;i< ch.length;i++){
if(ch[i] >= '0' && ch[i]<='9'){
count++;
}
}
return count;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();//"123 456"
char[] ch = str.toCharArray();//'-' '1''2''3'
int count = getCount(ch);
int size = 0;
int[] arr = new int[count];//1 2 3
int flag = 1;//统计正负号
for(int i=0;i<ch.length;i++){
if(ch[i]>='0'&& ch[i]<='9') {
arr[size++] = ch[i] - '0';
}
if(ch[i] == '-'){
flag *=-1;
}
}//1 2 3 4
int result = 0;
int exp = count;
for(int i=0;i<count;i++){
result+=arr[i]*Math.pow(10,--exp);
}
result*=flag;
System.out.println(result);
}
}