IMOOC JAVA第一季
第二天学习笔记
- for 循环变量初始化和循环变量部分,可以初始化多个变量,同事初始化和改变多个变量的值。
- for (循环变量;循环条件;循环变量变化){ 循环操作}
for(int i=1,j=5; i<5;ji++,j--;){
System.out.println(i + "+" + j + "(i + j)");
}
- 可以省略循环变量变化,把循环变量变化写在循环体中。
3.表示i<10,但是不等于5才进行循环
for (int i=1; i < 10 && i !=5;i++){
System.out.println(i);
}
Question:计算1到100之间不能被3整除的数的和?
思路:定义一个变量sum来保存数据和,定义一个变量i代表1-100之间的数据。值从1开始,通过for循环判断i是否是3的倍数,符合要求的数据保存到sum中。
public class HelloWorld {
public static void main(String[] args) {
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);
}
}
output:
1到100之间不能被3整除的数之和为:3367
Question:使用循环输出 1–10的数值,其中,如果数值大于 2 ,并且为 3 的倍数则停止输出。
public class HelloWorld{
public static void main(String[] args){
int i=1;
for(i=1; i < 10; i++){
if(i>2 && i % 3 ==0){
break;
}
System.out.println(i);
}
System.out.println("结束了");
}
}
output:
1
2
结束了
Question:循环将 1 到 10 之间的整数相加,如果累加值大于 20,则跳出循环,并输出当前的累加值。
public class HelloWorld{
public static void main(String[] args){
int i=1;
int sum = 0; //保存当前累加值
for(i=1; i < 10; i++){
sum = sum + i; // 累加求和
// 判断累加值是否大于20,如果满足则退出循环
if(sum>=20 ){
System.out.println("当前累加值为"+sum);
break;
}
}
System.out.println("结束了");
}
}
- Java循环跳转语句之 continue
continue的作用是跳过循环体中剩余语句进行下一次循环。
例如,打印 1–10 之间所有的偶数,使用 continue 语句实现代码为:
for(int i =0;i<10;i++){
// 判断i是否为偶数
if(i % 2==0){
continue; // 通过continue结束本次循环
}
System.out.println(i);
}
Question:求 1 到 10 之间的所有偶数的和
public class HelloWorld {
public static void main(String[] args) {
int sum = 0; // 保存累加值
for (int i = 1; i <= 10; i++) {
// 如果i为奇数,结束本次循环,进行下一次循环
if ( i % 2 !=0 ) {
continue;
}
sum = sum + i;
}
System.out.print("1到10之间的所有偶数的和为:" + sum);
}
}
- Java 循环语句之多重循环
Question:使用 * 打印长方形
// 外城循环控制行数
for (int i = 1; i <= 3; i++){
// 内层循环控制每行打印的*号数
for (int j = 1; j < = 8; j++){
System.out.println("*");
}
//每行打印完毕
System.out.println();
}
Question:使用 * 打印直角三角形
public class HelloWorld {
public static void main(String[] args) {
System.out.println("打印直角三角形");
// 外层循环控制行数
for (int i = 1; i<=3;i++ ) {
// 内层循环控制每行的*号数
// 内层循环变量的最大值和外层循环变量的值相等
for (int j = 1;j<=i;j++ ) {
System.out.print("*");
}
// 每打印完一行后进行换行
System.out.println();
}
}
}
Question:判断一个数(小于10位)的位数
- 方法1
public class HelloWorld{
public static void main(String[] args){
int num = 999;
int count = 0;
if(num >= 0 && num<= 999999999){
while(num!=0)
{
/*num的值是999,count=0,所以num/10第一次的值为99.9,去小数位得到整数99,此时count++得到值为1;num又第二次循环时的值为99,带入执行,num/10=9.9,去除小数位,此时count++,值为2;num第三次带入值循环时值为9,带入执行,num/10的值为0.9,去小数位得到值为0,此时count++,count值为3;进入第四次循环时,num的值为0,不满足循环条件,所以循环终止,最后得到count为3*/
count++;
num/=10;
}
System.out.println("它是个"+count+"位的数!");
}
else{
System.out.println("输入有误!");
}
}
}
/**
*
* @author henrytien@hotmail.com
*/
public class countNumber {
final static int[] sizeTable = {
9,99,999,9999,99999,999999,9999999,99999999,999999999, Integer.MAX_VALUE
};
static int sizeOfInt(int x){
for(int i = 0;;i++){
if (x <= sizeTable[i])
return i + 1;
}
}
/**
*
* @param args
*/
public static void main(String[] args){
System.out.println(sizeOfInt(1234));
System.out.println(sizeOfInt(123));
System.out.println(sizeOfInt(12345));
System.out.println(sizeOfInt(12));
}
}
output:
4
3
5
2
BUILD SUCCESSFUL (total time: 0 seconds)
debug:中间漏了一个括号,还是不够细心呢。
- Q:为指定成绩加分,直到分数大于等于 60 为止,输出加分前和加分后的成绩,并统计加分的次数
public class HelloWorld {
public static void main(String[] args) {
// 变量保存成绩
int score = 53;
// 变量保存加分次数
int count = 0;
//打印输出加分前成绩
System.out.println("加分前成绩:"+ score);
// 只要成绩小于60,就循环执行加分操作,并统计加分次数
while(score<60){
count++;
score ++;
}
//打印输出加分后成绩,以及加分次数
System.out.println("加分后成绩:"+ score);
System.out.println("共加了"+ count + "次!");
}
}
output:
加分前成绩:53
加分后成绩:60
共加了7次!
- 提高,用户输入整数成绩信息
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author henrytien@hotmail.com
* 功能:实现用户输入分数低于60分执行加分操作,并统计加分次数,每次只加一分
* 实现:定义一个变量score保存分数信息,count用于保存加分次数
*/
import java.util.Scanner;
public class HelloWorld {
public static void main(String args[]){
// 使用scanner方法
Scanner input = new Scanner(System.in); // 创建scanner对象
System.out.print("请您输入考试成绩:");
// 获取用户输入的信息
int score= input.nextInt();
int count = 0; //定义加分次数
System.out.println("加分前成绩:"+ score);
while(score<60){
score++;
count++;
}
System.out.println("加分后成绩:"+ score);
System.out.println("加分次数为"+count + "次!");
}
}
output:
run:
请您输入考试成绩:12
加分前成绩:12
加分后成绩:60
加分次数为48次!
BUILD SUCCESSFUL (total time: 6 seconds)
- 读取键盘输入
Scanner input = new Scanner(System.in); //创建scannner对象
int score = input.nextInt();