4.1 for循环
For(初始化;条件;但不动作;)
{}
1,第一个是初始化,可以定义一个变量并赋值。
2,循环维持条件,与while一样进入循环先检测是否满足。
3,步进,每轮循环必须执行的表达式。while和for总是可以替换的
1,如果有明确的次数用for
2,必须执行一次用 do while
3,其他情况用while
tips:Int 取值范围 -2^31…… 2^31-1
几种循环的使用情况
如果有固定的次数,使用for
必须执行一次用do while
其他情况用while
4.2 循环控制
- 素数
import java.util.Scanner;
public class Sushu {
private static Scanner in;
public static void main(String[] args) {
in = new Scanner(System.in);
int n = in.nextInt();
int isprme = 1;
for(int i =2;i<n;i++ )
{
if(n%i==0)
{
isprme = 0;
break;
}
}
if(isprme==1)
{
System.out.println(n+"是素数");
}
else
{
System.out.println(n+"不是素数");
}
}
}
tips:
1,break可以用于3种循环,break的位置很重要,要注意。
2,Continue 可以跳过这轮循环,继续下一轮。
3,break和continue只能跳出它所在的那层循环
4,循环的前面可以有一行放一个 标号:
然后,break或continue 标号 可以作于与标号的那层循环
4.3 多重循环
- 数硬币
import java.util.Scanner;
public class YB {
private static int n;
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
n = in.nextInt();
out:
for(int one = 0; one<n; one++)
{
for(int five = 0;five<n;five++)
{
for(int ten = 0;ten<n;ten++)
{
if(one+five*5+ten*10==n)
{
System.out.println(one+"张一元"+five+"张五元"+ten+"张十元");
break out;
}
}
}
{
}
}
}
}
tips:如果要让break跳出更上层的循环,最好在要跳出的循环加上标号
名字 :
4.4 逻辑类型
- .布尔类型 boolean
1,关系运算的结果只能是逻辑值,true或false。
这个值可以保存在一个对应的逻辑类型的变量中,这样的变量类型是boolean
2,布尔(boolean)是为了纪念Geprge boole对逻辑运算的贡献。
1 !A 如果ture就是false 否则想反
2 && a&&b 如果 ab都是 ture结果为ture,否则false
3,|| a||b ,如果ab有一个为ture,结果为ture,否则为false
4.5 循环计算
- 求和 f(n)=1+1/2+1/3+……+1/n;
import java.util.Scanner;
public class Fn {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
int n =in.nextInt();
double sum =0.0;
for(int i=1;i<=n;i++)
{
sum = sum +1.0/i;//用一个浮点数和整数做运算,会自动换算成浮点数
}
System.out.printf("%.2f",sum); //printf("%.2f",)输出小数点后2位
}
}
tips:
1,printf(“%.2f”,)输出小数点后2位
2,用一个浮点数和整数做运算,会自动换算成浮点数
- 最大公约数
import java.util.Scanner;
public class gcd {
private static Scanner in;
public static void main(String[] args) {
in = new Scanner(System.in);
int a= in.nextInt();
int b= in.nextInt();
while(b!=0)
{
int r = a%b;
a = b;
b = r;
}
System.out.println(a);
}
}
作业
- 素数和
题目内容:
我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。
现在,给定两个整数n和m,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。
输入格式:
两个整数,第一个表示n,第二个表示m。
输出格式:
一个整数,表示第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。
输入样例:
2 4
输出样例:
5
import java.util.Scanner;
public class Prime {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
int n,m;
n = in.nextInt();
m = in.nextInt();
int sum =0;
int[] numbers = new int[m+1];
for(int i =2;i<=m;i++)
{
for(int j = 2;i*j<=m;j++)
{
numbers[i*j] = 1;
}
}
for(;n<=m;n++)
{
if(numbers[n]==0)
{
sum = sum +n;
}
}
System.out.println(sum);
}
}
- 念整数
题目内容:
你的程序要读入一个整数,范围是[-100000,100000]。然后,用汉语拼音将这个整数的每一位输出出来。
如输入1234,则输出:
yi er san si
注意,每个字的拼音之间有一个空格,但是最后的字后面没有空格。当遇到负数时,在输出的开头加上“fu”,如-2341输出为:
fu er san si yi
输入格式:
一个整数,范围是[-100000,100000]。
输出格式:
表示这个整数的每一位数字的汉语拼音,每一位数字的拼音之间以空格分隔,末尾没有空格。
输入样例:
-30
输出样例:
fu san ling
import java.util.Scanner;
public class Shusu {
private static Scanner in;
public static void main(String[] args) {
in = new Scanner(System.in);
int number = in.nextInt();
int sum = 0;
if(number<0)
{
System.out.print("负");
number = -number;
}
for(int a;number>0;)
{
a = number%10;
number = number/10;
sum = sum*10+a;
}
// System.out.println(sum);
for(int b;sum>0;)
{
b= sum%10;
switch(b)
{
case 0 :System.out.print("零");
break;
case 1 :System.out.print("壹");
break;
case 2 :System.out.print("贰");
break;
case 3 :System.out.print("叁");
break;
case 4 :System.out.print("肆");
break;
case 5 :System.out.print("伍");
break;
case 6 :System.out.print("陆");
break;
case 7 :System.out.print("柒");
break;
case 8 :System.out.print("捌");
break;
case 9 :System.out.print("玖");
break;
}
sum = sum/10;
}
}
}