当前位置: 代码迷 >> 综合 >> Java中 输入输出 、控制流程、大数值和数组
  详细解决方案

Java中 输入输出 、控制流程、大数值和数组

热度:15   发布时间:2023-11-23 13:15:25.0

目录

输入输出

输入:

输出:

控制流程

块作用域:

条件语句:

循环语句结构

关于switch语句

中断控制流语句:break 和 continue

大数值

数组

数组的遍历输出


输入输出

输入:

读取输入:

要想通过控制台进行输人,首先需要构造一个 Scanner 对象,并与“ 标准输人流” System.in 关联。

Scanner in = new Scanner(System.in);

使用 nextLine 方法是因为在输人行中有可能包含空格。

String name = in.nextLine();

要想读取一个单词(以空白符作为分隔符) 就调用

String firstName = in.next();

要想读取一个整数, 就调用 nextlnt 方法。

int age = in.nextlnt();

与此类似,要想读取下一个浮点数, 就调用 nextDouble 方法。

double x = in.nextdouble();

用到输入的时候就需要在程序的最开始添加上一行:

import java.util.*;

Scanner 类定义在java.util 包中。 当使用的类不是定义在基本java.lang 包中时,一定要使用import 指示字将相应的包加载进来。

输出:

将x输出到控制台上

System.out.print(x);

也可以用类似于c语言库函数中的printf,

System.out.printf("Hello, %s. Next year, you'll be %d", name, age);

输入输出文件夹:

可以使用下面的调用方式找到路径的位置:

String dir = System.getProperty("user.dir");//获取的是当前文件代码所路径

控制流程

块作用域:

由一对大括号{}括起来的若干条简单的Java语句称之为块。

一个块可以嵌套到另一个块内,但是不能在嵌套的两个块中声明同名的变量。

条件语句:

if(condition)statement   //条件必须用括号括起来

循环语句结构

xxxx(){}   //xxxx可以是for, while等

值得注意的是for循环中,执行的顺序

for(int i = 0; i<10;a++){System.out.println("大家好");//int i = 0;先执行      i<10;第二个执行      System语句第三个执行    最后执行a++}

另外,对有规律的数字进行计算,例如,求n的阶乘,能用数学公式计算的,不要盲目套用for循环。

关于switch语句

switch(a){	case 10:System.out.println("获得10");break;case 20:System.out.println("获得20");break;case 50:System.out.println("获得50");break;default:System.out.println("啥都木有");break;}   

case 标签可以是:

类型为 char、byte、 short 或 int 的常量表达式。

枚举常量。

从 Java SE 7开始, case 标签还可以是字符串。(引用类型)

中断控制流语句:break 和 continue

(Java中这些完全是可选的,即不适用这些语句也可以表达同样的逻辑含义)

switch击穿:执行完上一句之后,接着继续执行,直到遇到break才停止运行。break就是为了防止击穿。

break只能打断包裹自己的for循环,不能打断多层

当遇到continue的时候,直接进入下次循环,此次循环continue之后的不执行

continue语句将控制转移到最内层循环的首部。

大数值

Biglnteger 类实现了任意精度的整数运算, BigDecimal 实现了任意精度的浮点数运算。

数组

是引用类型 不是基本类型;引用类型的 = 相当于把自己的指向换掉(Java中没有指针。)

声明一维数组

int[] a = new int[10];//a不是一个空数组,每个位置都被初始化为0,
int[] b = {1,2,3,4,5};
int[] c = new int[]{2,3,4,5,6};//以上都是声明一维数组的方式

声明二维数组:

int [][] a = new int[3][5];
int [][] b = {
{0,0,0,0,0}
{0,0,0,0,0}
{0,0,0,0,0}
};//以上两种声明方式等价

声明三维数组:

int [][][] c = new int [3][4][5];

表示这个数组中有3个二维数组,每个二维数组中有4个一维数组,每个一维数组中有5个元素

数组的遍历输出

for each遍历一维数组

int [] a = new int[3];for(int d : a )System.out.println(d);

for each 遍历二维数组(多维也是同理)

int[][] n = new int[3][4];for(int [] d : n){for(int e : d){System.out.println(e);}}

要想快速地打印一个二维数组的数据元素列表, 可以调用

System.out.println(Arrays.deepToString(a));

输出格式为:

[[0,0,0,0], [0,0,0,0], [0,0,0,0 ] [0,0,0,0]]

数组排序:常用的有Arrays.sort()函数

int[] a ={4,45,7,3,2,9,65,354};Arrays.sort(a);for(int d : a ){System.out.println(d);}	

输出结果为: 2  3  4  7  9  45  65  354

一些关于StringBuilder和StringBuffer以及字符串拼接的知识点:

(大量)StringBuilder 事先申请足够大的数组,不需要每次循环都申请空间,少了很多申请和销毁空间的无用功,所以速度快,StringBuffer 跟上述原理一样,只不过加了锁,比上述StringBuilder稍微慢一点点。

(少量)用字符串拼接。

  相关解决方案