java学习之旅四
java控制语句
条件控制语句
4.1 if-else语句
方法同C语言
例题:小明考了78分,60分以上及格,80分以上为良好,90分以上为优秀,60分以下要重考,编写一段程序,输出小明的情况吧。
public class ScoreJudge {
public static void main(String[] args){
int score = 78;
if(score >= 60){
if(score >= 80){
if(score >= 90){
System.out.println("成绩优秀");
}
else{
System.out.println("成绩良好");
}
}
else{
System.out.println("成绩及格");
}
}
else{
System.out.println("需要补考");
}
}
}
注:所有的条件语句都是利用条件表达式的真或假来决定执行路径,Java里不允许将一个数字作为布尔值使用,虽然这在C和C++是允许的,如果要在布尔测试里使用一个非布尔值,需要先用一个条件表达式将其转换成布尔值,其他控制语句同理。
4.2 switch语句
方法同C语言
public class Draw {
public static void main(String[] args){
int num = 2;
switch(num){
case 1:
System.out.println("恭喜你,获得了一等奖");
break;
case 2:
System.out.println("恭喜你,获得了二等奖");
break;
case 3:
System.out.println("恭喜你,获得了三等奖");
break;
default:
System.out.println("很遗憾,下次再来");
}
}
}
运行结果:
循环控制语句
4.3while语句与do-while语句
方法同C语言
例题:分别用 while 和 do-while 两种方法,编写一个程序,实现 1-1000 中所有偶数的和,并输出。验证一下两种方法你输出的结果是一致吗?
public class SumOfEven {
public static void main(String[] args){
int i1 = 1, i2 = 1;
int sum1 = 0, sum2 = 0;
while (i1 <= 1000){ //循环1000次
if(0 == i1 % 2){ //判断是否为偶数
sum1 += i1; //将偶数加入到总数里
}
i1++; //i自增1
}
System.out.println("用while,1到1000中,所有偶数的和为:"+sum1);
do {
if (0 == i2 % 2){ //在条件语句中,将数值写在前面是为了防止将==写成了=
sum2 += i2;
}
i2++;
} while(i2 <= 1000);
System.out.println("用do-while,1到1000中,所有偶数的和为:"+sum2);
}
}
运行结果:
4.4 for语句
方法同C语言
代码一:
4.3代码用for语句实现
public class SumOfOdd {
public static void main(String[] args){
int sum = 0;
for(int i = 1; i <= 1000; i++){
if(0 == i % 2){
sum += i;
}
}
System.out.println("用for,1到1000中,所有偶数和为:"+sum);
}
}
代码二:
计算100以内不能被3整除的数之和:
int sum = 0; // 保存不能被3整除的数之和
// 循环变量 i 初始值为 1 ,每执行一次对变量加 1,只要小于等于 100 就重复执行循环
for (int i = 1;i<=100;i++) {
// 变量 i 与 3 进行求模(取余),如果不等于 0 ,则表示不能被 3 整除
if (i % 3 != 0) {
sum = sum + i; // 累加求和
}
}
System.out.println("1到100之间不能被3整除的数之和为:" + sum);
代码三:嵌套循环
打印
1
12
123
1234
12345
public class PrintNum {
public static void main(String[] args){
// 外层循环控制行数
for (int i = 1; i<=5; i++) {
// 内层循环控制每行的数
// 内层循环变量的最大值和外层循环变量的值相等
for (int j = 1; j<=i; j++) {
System.out.print(j);
}
// 每打印完一行后进行换行
System.out.println();
}
}
}
跳转语句(break)
break的意思为跳出,经常用在条件和循环语句中,用来跳出循环语句的。
for(int i = 1; i <= 10; i++){
System.out.println("循环第"+i+"次");
if(0 == i % 3){
break;
}
if(0 == i % 5){
System.out.println("我进来了!");
}
}
continue作用是跳过循环体中剩余的语句执行下一次循环。
例题:打印10以内的所有奇数:
for(int i = 1; i <= 10; i++){
if(0 == i % 2) //判断i是否为偶数
continue; //通过continue结束本次循环
System.out.println(i);
}
补充
在循环语句中,Java SE5 引入了一种新的更加简洁的for语法用于数组和容器,即foreach语法
例题:一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是该数除了1和它本身以外不再有其他的因数的数被称为素数,请编程判断4549、8461、641、313是否为素数
代码如下:
public class JudgePrime {
public static void main(String[] args){
int a = 4549;
boolean result = true;
for (int i=2; i*i <= a; i++) {
if (a % i == 0) { //a依次除以从2到a开方后的数(a能整除5,就一定能整除(a/5))
result = false;
break;
}
}
if (result) {
System.out.println(a+"是素数");
}
else
System.out.println(a+"不是素数");
}
}
java学习之旅五
java数组
5.1数组的定义和初始化
数组就是相同数据类型的元素按一定顺序排列的集合。我们可以把它看成一个大的盒子,里面按顺序存放了多个数据类型相同的数据。
【1】要使用数组,首先我们得对数组进行声明。
语法:数据类型[ ] 数组名; //或者: 数据类型 数组名[ ];
例如:
int ages[]; //存放年龄的数组,类型为整型
char symbol[]; //存放符号的数组,类型为字符型
String [] name; //存放名称的数组,类型为字符串型
【2】当我们声明了数组后,需要为数组分配空间,也就是定义多大的数组。
语法:数组名 = new 数据类型 [ 数组长度 ];
数组长度就是数组最多可存放元素的个数。我们也可以在数组声明的时候初始化数组,或者在声明时就为它分配好空间,这样我们就可以不用再为数组分配空间
语法:
int [] ages = {12,18,9,33,45,60}; //声明并初始化了一个整型数组,它有6个元素
char [] symbol = new char[10] //声明并分配了一个长度为10的char型数组
【3】Java中可以将一个数组赋值给另一个数组
例如:
int [] a1 = {1,2,3};
int [] a2;
a2 = a1;
运行如下代码,观察实验结果
public class Test {
public static void main(String[] args) {
int [] a1 = {1,2,3};
int [] a2;
a2 = a1;
for(int i = 0; i < a2.length; i++){
a2[i]++;
}
for(int i = 0; i < a1.length; i++){
System.out.println(a1[i]);
}
}
}
5.2一维数组
注意:
【1】数组下标从 0 开始。所以数组的下标范围是0 至 数组长度-1。
【2】数组不能越界访问,否则会报错。
for 语句在数组内可以使用特殊简化版本,在遍历数组、集合时,foreach 更简单便捷。从英文字面意思理解 foreach 也就是“ for 每一个”的意思。
运行如下代码,观察实验结果
public class JudgePrime {
public static void main(String[] args){
int [] ages = {12, 18, 9, 33, 45, 60};
int i = 1;
for(int age:ages){
System.out.println("数组中第"+i+"个元素是"+age);
i++;
}
}
}
5.3二维数组
方法同C语言
运行如下代码,观察实验结果
String [][] name = {{"ZhaoYi", "QianEr", "SunSan"},
{"LiSi", "ZhouWu", "WuLiu"}};
for(int i = 0; i < 2; i++){
for (int j = 0; j < 3; j++){
System.out.println(name[i][j] );
}
}
运行结果:
例题
在控制台上每10个数为一组,打印出前100的数,即1~100。(提示:可以用System.out.printf("%3d",整数)。 如:
参考代码
public class PrintNum {
public static void main(String[] args){
int num[][] = new int[10][10];
int count = 0;
for(int i = 0; i < 10; i++){
for(int j = 0; j < 10; j++){
num[i][j] = ++count;
System.out.printf("%3d ",num[i][j]);
}
System.out.println();
}
}
}