一、流程控制
1、条件语句
if语句
框架:
if(条件1){
if(条件2){
代码块1
}
else{
代码块2
}
}
else{
代码块3
}
题目:
小明考了 78 分,60 分以上及格,80 分以上为良好,90 分以上为优秀,60 分以下要重考,编写源代码 ScoreJudge.java,输出小明的情况。
public class SourceJudge{
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.print("成绩合格");
}
}
else{
System.out.println("需要补考");
}
}
}
switch语句
switch(表达式){
case 值1:
代码块1
break;
case 值2:
代码块2
break;
...
default:
默认执行的代码块
}
当 switch
后表达式的值和 case
语句后的值相同时,从该位置开始向下执行,直到遇到 break
语句或者 switch
语句块结束;如果没有匹配的 case
语句则执行 default
块的代码。
defualt 块不是必须的,默认为空。
习题
给出一个数,判断是几等奖。
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("恭喜你,下次再来");
}
}
}
2、循环语句
while和do-while
while
while 的执行过程是先判断,再执行。
while(条件){
代码块
}
do-while
do-while 的执行过程是先执行一次,再循环判断(所以循环内的代码至少会执行一次)。
do{
代码块
}while(条件);
练习
练习:分别用 while 和 do-while 两种方法,编写代码,文件名为: SumOfEven.java。实现计算 1-1000 中所有偶数的和,并输出。验证一下两种方法你输出的结果是一致吗?
public class SumOfEven{
public static void main(String[] args){
int i1 = 1, i2 = 1;
int sum1 = 0, sum2 = 0;
while(i1 <= 1000){
if(i1 % 2 == 0){
sum1 = sum1 + i1;
}
i1 = i1 + 1;
}
System.out.println("while : ",sum1);
do{
if(i2 % 2 == 0){
sum2 = sum2 + i2;
}
i2 = i2 + 1;
} while(i2 <= 1000);
System.out.println("do-while : "+sum2);
}
}
for语句
for(循环变量初始化①; 循环条件②; 循环变量值操作③){
循环操作④
}
练习: 1-1000 中所有偶数的和,并输出。
public class SumOfEven{
public static void main(String[] args){
int sum = 0;
int i;
for(i = 1; i <= 1000; i++){
if(i % 2 == 0){
sum += i;
}
}
System.out.println(sum);
}
}
使用for语句去除字符串空格
import java.util.Scanner;
public class StringUtil {
public static void main(String[] args) {
Scanner in =new Scanner(System.in);
//获取String值
String a=in.nextLine();
StringBuilder stringBuilder = new StringBuilder(a);
for (int i = 0; i < stringBuilder.length(); i++) {
if (stringBuilder.charAt(i)==' ') {
stringBuilder.deleteCharAt(i);
i--;
}
}
System.out.println(stringBuilder.toString());
}
}
或者
import java.util.Scanner;
public class HelloWorld {
public static void main(String[] args) {
Scanner in =new Scanner(System.in);
//获取String值
String a=in.nextLine();
StringBuilder stringBuilder = new StringBuilder(a);
for (int i = 0; i < stringBuilder.length(); i++) {
if (stringBuilder.charAt(i)==' ') {
stringBuilder.deleteCharAt(i);
i--;
}
}
System.out.println(stringBuilder.toString());
}
}
练习
从控制台输入字符串 a 和字符串 b。
比较字符串 a 和字符 b 是否完全一致,长度,内容等完全一致。
如果完全一致,输出相同,如果不一致,输出不同。
禁止使用 equals 方法。
import java.util.Scanner;
public class ContrastString {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
//获取String值
String a = in.nextLine();
String b = in.nextLine();
if (a.length() != b.length()) {
System.out.println("不同");
return;
}
for (int i = 0; i < a.length(); i++) {
if (a.charAt(i) != b.charAt(i)) {
System.out.println("不同");
return;
}
}
System.out.println("相同");
}
}
3、跳转语句
public class Jump{
public static void main(String[] args){
for(int i = 1; i <= 10; i++){
System.out.println("循环第"+i+"次");
if(i%3==0){
break;
}
if(i%5==0){
System.out.println("我进来了");
}
}
for(int i = 1; i <= 10; i++){
if(i % 2 == 0){
continue;
}
System.out.println(i);
}
}
}
4、继续练习
打印星期
import java.util.Scanner;
public class PrintWeek{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int x = in.nextInt();
switch(x){
case 1:
System.out.println("今天是星期一");
break;
case 2:
System.out.println("今天是星期二");
break;
case 3:
System.out.println("今天是星期三");
break;
case 4:
System.out.println("今天是星期四");
break;
case 5:
System.out.println("今天是星期五");
break;
case 6:
System.out.println("今天是星期六");
break;
case 7:
System.out.println("今天是星期七");
break;
}
}
}
二、数组
所谓数组,是有序的元素序列。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便,把具有相同类型的若干元素按无序的形式组织起来的一种形式。这些无序排列的同类数据元素的集合称为数组。数组是用于储存多个相同类型数据的集合。-- 来自百度百科
简单来说,数组就是相同数据类型的元素按一定顺序排列的集合。可以把它看成一个大的盒子,里面按顺序存放了多个数据类型相同的数据。
一维数组
声明数组
int ages[]; //存放年龄的数组,类型为整型
char symbol[]; //存放符号的数组,类型为字符型
String [] name; //存放名称的数组,类型为字符串型
初始化数组,为数据定义存储空间
int [] ages = {12,18,9,33,45,60}; //声明并初始化了一个整型数组,它有6个元素
char [] symbol = new char[10] //声明并分配了一个长度为10的char型数组
理解数组的引用
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++){
System.out.println("first"+a2[i]);
a2[i] ++;
}
for(int i = 0; i< a1.length; i++){
System.out.println("secomd"+a1[i]);
}
}
}
可以看到,修改 a2 的值,a1 的值也跟着变化。
另外一个练习
public class JudgePrime{
public static void main(String[] args){
int [] ages = {12,45,11,54,98,60};
int i = 1;
for(int age:ages){
System.out.println("数组中第"+i+"个元素是"+age);
i++;
}
}
}
二维数组
数据类型 [][] 数组名 = new 数据类型[行的个数][列的个数];
//或者
数据类型 [][] 数组名;
数组名 = new 数据类型[行的个数][列的个数];
//也可以
数据类型 [][] 数组名 = {
{第一行值1,第一行值2,...}
{第二行值1,第二行值2,...}
...
}
//二维数组的赋值和访问,跟一维数组类似,可以通过下标来逐个赋值和访问,注意索引从 0 开始
数组名[行的索引][列的索引] = 值;
public class ArrayTest{
public static void main(String[] ags){
String[][] name = {{"guoyu","zhagnxiaoqiang"},{"xiaocong0","zanxuli","liuwei"}};
for(int i = 0; i< name.length;i++){
for(int j = 0; j < name[i].length;j++){
System.out.println(name[i][j]);
}
}
}
}
练习题目:
有一份成绩单,上面有 10 位学生的成绩(61,57,95,85,75,65,44,66,90,32),请求出平均成绩并输出。
public class AverageScore{
public static void main(String[] args){
int [] score = {61,57,95,85,75,65,44,66,90,32};
int sum = 0;
for(int i = 0; i < score.length; i++){
sum = sum + score[i];
}
int avg = sum/score.length;
System.out.println(avg);
}
}
另外一个练习:获取输入
import java.util.Scanner;
public class ScannerDemo{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
String s = in.nextLine();
System.out.println(s);
//循环输入String数据,当输入eixt时退出循环
while(!in.hasNext("exit")){
System.out.println(in.nextLine());
}
//关闭输入
in.close();
}
}
另外一个练习
import java.util.Scanner;
import java.util.*;
public class InputTest{
public static void main(String[] args){
System.out.println("输入:");
Scanner in = new Scanner(System.in);
//ArrayList strList = new ArrayList();
ArrayList<String> strList = new ArrayList<String>();
while(!in.hasNext("end")){
String str = in.nextLine();
strList.add(str);
}
for(int i = 0; i<strList.size();i++){
System.out.println(strList.get(i));
}
}
}
练习题
现给出一串数据(313, 89, 123, 323, 313, 15, 90, 56, 39)求出最大值和最小值并输出。
public class MaxAndMin{
public static void main(String[] args){
int [] array = {313,89,123,323,313,15,90,56,39};
int max=array[0],min=array[0];
for(int i =1; i<array.length;i++){
if(array[i] > max){
max = array[i];
}
if(array[i] < min){
min = array[i];
}
}
System.out.println(max);
System.out.println(min);
}
}