Java的一些总结1
二维数组
1.二维数组的定义**
两种初始化形式
格式1: 动态初始化
数据类型 数组名 [ ][ ] = new 数据类型[m][n]
数据类型 [ ][ ] 数组名 = new 数据类型[m][n]
数据类型 [ ] 数组名 [ ] = new 数据类型[m][n]
举例:int [ ][ ] arr=new int [5][3]; 也可以理解为“5行3例”
格式2: 静态初始化
数据类型 [ ][ ] 数组名 = {{元素1,元素2…},{元素1,元素2…},{元素1,元素2…}…};
举例:int [ ][ ] arr={{22,15,32,20,18},{12,21,25,19,33},{14,58,34,24,66},};
2.二维数组在method间的传递
见程序
此程序的目的是
在给定大小的画布内画矩形,重叠处会被最新的矩阵覆盖,输入为负数时画出最终图像。
3.写死循环可用
- while(true)
- for(;; )
4.输入一个char字符可用
char c = new java.util.Scanner(System.in).next().charAt(0);
或者
Scanner sc = new Scanner(System.in);
String s = sc.next();
char c = s.charAt(0);
1)先创建一个Scanner对象
2)调用Scanner对象的next()方法获取控制台输入,返回的是一个String类型,因为没有nextChar()方法
3)调用String的charAt(0)方法获取第一个字符
5.Unreachable code 错误
不可达代码,比如在循环的break或者return后面的代码就是不可达代码,因为执行它们之前就已经跳出循环了,只要把这段代码移到break或者return之前就好了。
或者是没能完全跳出循环,无法执行那些语句。
package test;
import java.util.Scanner;
class ImageBuilder
{
public char[][] addRectangle(int[] arrTL, int[] arrBR, char chara, char[][] rectang) //Add new Rectangle to the total,rectang is the last image
{
if (arrTL[0] < arrBR[0] && arrTL[1] < arrBR[1]) //Overwrite previous characters
{
for (int i=arrTL[0]; i<arrBR[0]+1; i++)
{
for (int j=arrTL[1]; j<arrBR[1]+1; j++)
{
rectang[i][j] = chara;
}
}
}
return rectang;
}
void drawImage(char[][] arr, int[] area) //Display the final image
{
for (int i=0; i<area[0]; i++)
{
for (int j=0; j<area[1]; j++)
{
System.out.print(arr[i][j]);
}
System.out.println();
}
}
}
public class Image{
public static void main(String[] args)
{
ImageBuilder image1 = new ImageBuilder();
int[] area = new int[2]; //Image size
int[] topL = new int[2]; //Top left corner
int[] bottomR = new int[2]; // Bottom right corner
boolean err;
Scanner sc = new Scanner(System.in);
do
{
System.out.println("Please enter the size of the drawing area (height, width): ");
err = false;
if (sc.hasNextInt())
{
area[0] = sc.nextInt();
area[1] = sc.nextInt();
}
else
{
err = true;
String line = sc.nextLine();
System.out.println("Error. Try again");
}
}while(err);
char[][] arrR = new char[area[0]][area[1]];
for (int i=0; i<area[0]; i++)
{
for (int j=0; j<area[1]; j++)
{
arrR[i][j] = ' ';
}
}
lable1:
while(true) //It can draw several rectangle
{
do
{
System.out.println("Please enter the coordinates of the top left corner of a rectangle (row, col): ");
err = false;
if (sc.hasNextInt())
{
topL[0] = sc.nextInt();
if (topL[0]<0)
break lable1; //topL[0]<0 get out big loop
topL[1] = sc.nextInt();
}
else
{
err = true;
String line = sc.nextLine();
System.out.println("Error. Try again");
}
}while(err);
do
{
System.out.println("Please enter the coordinates of the bottom right corner of the rectangle (row, col): ");
err = false;
if (sc.hasNextInt())
{
bottomR[0] = sc.nextInt();
bottomR[1] = sc.nextInt();
}
else
{
err = true;
String line = sc.nextLine();
System.out.println("Error. Try again");
}
}while(err);
System.out.println("Please enter the character to be used to fill the rectangle: ");
String s = sc.next();
char fill = s.charAt(0);
System.out.println("Thank you. Rectangle added to image.");
System.out.println();
image1.addRectangle(topL, bottomR, fill, arrR);
}
System.out.println("Image complete. Displaying image . . . ");
image1.drawImage(arrR, area);
sc.close();
}
}