三大基本结构
顺序结构
- 表达式语句:x=3;x++;等等
- 输出函数语句:print();println,+(算术加法,字符串连接)
- 键盘输入语句:import,Scanner,sc.nextInt()/nextDouble()
选择结构(的三种方式)
-
条件表达式 a>b?a:b a<b?b:a (a>b&&a>c)?a:(b>c?b:c)
-
if语句
-
两种基本形式
- if(表达式){语句序列}
- if(表达式){语句序列 1}else{语句序列2}
-
嵌套的if语句:结构里嵌套同结构的语句
Scanner sc=new Scanner(System.in); double n; System.out.println("请输入n的值"); n=sc.nextDouble(); if(n<0) System.out.print("n<0"); else if(n==0) System.out.print("n=0"); else System.out.print("n>0");
-
-
switch语句
-
switch(表达式) {
case 常量1:[语句序列]
……
case 常量n:[语句序列]
[default:语句序列]
} -
①表达式只能是整型、字符型、枚举和String型
②常量不可重复
③各常量之间没有顺序要求
-
循环结构
-
while
while(表达式){循环体语句;}
false跳出循环
例:
int i, sum; sum = 0; i = 1; while(i <= 5) {//循环条件 sum += i; //计数器 i++; //累加器 } System.out.print("和 ="+ sum);//输出为"和=15"
-
do while
do{循环体}while(表达式)
false跳出循环
int i, sum; sum = 0; i = 1; do { sum += i; //计数器 i++; //累加器 } while(i <= 5); //循环条件 System.out.printf("sum ="+ sum);//输出为"sum=15"
-
for
for(表达式1; 表达式2; 表达式3) {
循环体;
}
说明:
- 三个表达式均可省略,但分号不能缺;
- 表达式2如果缺省,缺省值为true。
- 如果循环体只有一条语句,则大括号可省略。
int sum=0; for (int i=0;i<=100;i++){ sum+=i; } System.out.println("零到一百的各个数之和"+sum);
增强型for循环(用于数组或集合)
int[] arr = {1, 2, 3};
for (int i : arr) //遍历数组
System.out.println(i);
示例
选择
if
-
输入一个年份,判断是否闰年。
import java.util.*; public class HI{ public static void main(String[]agrs) { int year; Scanner sc=new Scanner(System.in); System.out.print("请输入年份:"); year=sc.nextInt(); if(year%4==0&&year%100!=0||year%400==0) {System.out.println("该年是闰年");} else {System.out.println("该年不是闰年");} } }
-
求小写字母在小写字母表中的序号,若不是小写字母,则序号为0。
import java.util.*;
public class HI{
public static void main(String[]agrs) {
char ch;
int n;
Scanner sc=new Scanner(System.in);
System.out.print("请输入一个小写字母");
ch=sc.next().charAt(0);
if(ch<='z'&&ch>='a') {n=ch-'a'+1;}
else {n=0;}
System.out.println("这个字母在字母表中的序号为"+n);
}
}
import java.util.*;
public class HI{
public static void main(String[]agrs){
char ch;
String str;
Scanner sc=new Scanner(System.in);
System.out.print("请输入一个字符");
ch=sc.next().charAt(0);
if(ch<='z'&&ch>='a') {str="是小写字母字符";}
else {if(ch>='A'&&ch<='Z'){str="是大写字母字符";}
else {if(ch>='0'&&ch<='9') {str="是数字";}else{str="是其它字符";}}}
System.out.println(ch+str);
}
}
import java.util.*;
public class First{
public static void main(String[]args){
int yearsOld;
int yearBirth,monthBirth,dayBirth;
int yearNow,monthNow,dayNow;
Scanner sc=new Scanner(System.in);
Calendar cal=Calendar.getInstance();
yearNow=cal.get(Calendar.YEAR);
monthNow=cal.get(Calendar.MONTH);monthNow+=1;
dayNow=cal.get(Calendar.DATE);
System.out.println("请输入你的生日");
System.out.println("年");
yearBirth=sc.nextInt();
System.out.println("月");
monthBirth=sc.nextInt();
System.out.println("日");
dayBirth=sc.nextInt();
yearsOld=yearNow-yearBirth;
if(monthNow==monthBirth&&(dayNow<dayBirth||monthNow<monthBirth)){yearsOld-=1;}
System.out.println("现在是"+yearNow+"年"+monthNow+"月"+dayNow+"日");
System.out.println("你的生日是"+yearBirth+"年"+monthBirth+"月"+dayBirth+"日");
System.out.println("你现在已经"+yearsOld+"周岁了");
}}
import java.util.*;
public class First{
public static void main(String[]args){
int num1,num2,num3;
int max;
Scanner sc=new Scanner(System.in);
System.out.println("请输入第一个整数:");
num1=sc.nextInt();
System.out.println("请输入第二个整数:");
num2=sc.nextInt();
System.out.println("请输入第三个整数:");
num3=sc.nextInt();
if(num1>=num2&&num1>=num3){max=num1;}
else{if(num2>=num3&&num2>num1){max=num2;}
else max=num3;}
System.out.println("在"+num1+","+num2+","+num3+"中最大的数为:"+max);
}}
import java.util.*;
public class First{
public static void main(String[]args){
int num1,num2,num3;
int n;
Scanner sc=new Scanner(System.in);
System.out.println("请输入第一个整数:");
num1=sc.nextInt();
System.out.println("请输入第二个整数:");
num2=sc.nextInt();
System.out.println("请输入第三个整数:");
num3=sc.nextInt();
if (num1>num2&&num1>num3){
if (num2<num3){n=num2;num2=num3;num3=n;}}
if (num2>num1&&num2>num3){
if (num1>num3){n=num1;num1=num2;num2=n;}
else {n=num1;num1=num2;num2=num3;num3=n;}}
if (num3>num2&&num3>num1){
if (num2>num1){n=num1;num1=num3;num3=n;}
else{n=num1;num1=num3;num3=num2;num2=n;}}
System.out.println("按照自小到大的顺序排列依次为:"+num3+","+num2+","+num1);
}}
① 能被3、5、7整除
② 能被 3、5 整除
③ 能被 3、7 整除
④ 能被 5、7*整除
⑤ 能被 3 整除
⑥ 能被 5 整除
⑦ 能被 7 整除
⑧ 不能被3、5、7中任何一个数整除
import java.util.*;
public class Test {
public static void main(String[] args) {
int num;
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个整数:");
num = sc.nextInt();
if(num % 3 == 0 && num % 5 == 0 && num % 7 == 0){
System.out.print(num + "能同时被3、5、7整除");
}
else if(num % 3 == 0 && num % 5 == 0 && num % 7 != 0){
System.out.print(num + "能同时被3、5整除,但不能被7整除");
}
else if(num % 3 == 0 && num % 5 != 0 && num % 7 == 0){
System.out.print(num + "能同时被3、7整除,但不能被5整除");
}
else if(num % 3 != 0 && num % 5 == 0 && num % 7 == 0){
System.out.print(num + "能同时被5、7整除,但不能被3整除");
}
else if(num % 3 == 0 && num % 5 != 0 && num % 7 != 0){
System.out.print(num + "能被3整除,但不能被5、7整除");
}
else if(num % 3 != 0 && num % 5 == 0 && num % 7 != 0){
System.out.print(num + "能被5整除,但不能被3、7整除");
}
else if(num % 3 != 0 && num % 5 != 0 && num % 7 == 0){
System.out.print(num + "能被7整除,但不能被3、5整除");
}
else {
System.out.print(num + "不 能被3、5、7的任一个整除");
}
}
}
-
输入你设想的月薪,计算纳税额。
纳税方案简单如下:月薪低于5000,不纳税;5000-10000之间的部分,税率5%;高于10000-20000的部分,税率10%;高于20000,税率20%
import java.util.*; public class Taxes { public static void main(String[] args) { int wages; double taxes; Scanner sc = new Scanner(System.in); System.out.print("请输入月薪:"); wages = sc.nextInt(); //计算个人所得税 if(wages <= 5000){ taxes = 0; } else if(wages < 10000){ taxes = (wages - 5000) * 0.03; } else if(wages < 20000){ taxes = 5000 * 0.03 + (wages - 10000) * 0.1; } else{ taxes = 5000 * 0.03 + 10000 * 0.1 + (wages - 20000) * 0.2; } System.out.print ("当月薪是: " + wages + "时,纳税金额是:" + taxes); } }
-
输入三个整数构成三角形,判断该三角形类型(等边、等腰、直角、等腰直角、普通三角形?),并计算这三个整数构成的三角形面积。面积公式=√[hp* (hp-a)*(hp-b) *(hp-c)],其中a,b,c是三个边长,hp是半周长
import java.util.*;
public class Test {
public static void main(String[] args) {
int a, b, c;
double h, area;
Scanner sc = new Scanner(System.in);
System.out.println("请依次输入三角形的三边长:");
a = sc.nextInt();
b = sc.nextInt();
c = sc.nextInt();
if(a+b>c && a+c>b && b+c>a) {
System.out.println(a +"," + b + "和" + c + "能构成三角形");
if(a == b && b == c) {
System.out.println("该三角形是等边三角形");
}
else if(a == b || a == c || b == c) {
if(a*a+b*b==c*c || a*a+c*c==b*b || c*c+b*b==a*a) {
System.out.println("该三角形是等腰直角三角形");
}
else {
System.out.println("该三角形是等腰三角形");
}
}
else if(a*a+b*b==c*c || a*a+c*c==b*b || c*c+b*b==a*a) {
System.out.println("该三角形是直角三角形");
}
else{
System.out.println("该三角形是一般三角形");
}
h = (a + b + c) / 2.0;
area = Math.sqrt(h * (h-a) * (h-b) * (h-c));
System.out.println("面积是:" + area);
}
else {
System.out.println(a +"," + b + "和" + c + "不能构成三角形");
}
}
}
switch
-
根据成绩输出相应等级
需求规格说明:
成绩 ------ 1个实数
对成绩进行四舍五入后,只保留整数部分
(以下所说的成绩均表示整数成绩)
-
当 90 <= 成绩 <= 100 时,等级为 A
-
当 80 <= 成绩 < 90 时,等级为 B
-
当 70 <= 成绩 < 80 时,等级为 C
-
当 60 <= 成绩 < 70 时,等级为 D
-
当 0 <= 成绩 < 60 时,等级为 E
-
当 60 <= 成绩 <= 100 时,
若成绩以 0 或 1 结尾,在字母等级后加‘-’;
若成绩以 8 或 9 结尾,在字母等级后加‘+’;
若成绩 = 100, 在字母等级后加‘+’。
-
当 成绩 < 60 时,
若成绩 < 20, 在字母等级后加‘-’;
若成绩 >= 40, 在字母等级后加‘+’。
- 若输入成绩 < 0.0 或 > 100.0时,输出 ”Input score error!”
int score; Scanner sc=new Scanner(System.in); System.out.println("请输入成绩(整数)"); score=sc.nextInt(); String grade=" "; if (score<=100&&score>=0){ switch(score/10){ case 10: case 9: grade="A"; break; case 8: grade="B"; break; case 7: grade="C"; break; case 6: grade="D"; break; default: grade="E"; if(score>=40){grade+="+";} else if(score<=20){grade+="-";} } if(score==100){grade+="+";}; if(score>=60&&(score%10==9||score%10==8)){grade+="+";} else if(score>=60&&(score%10==1||score%10==0)){grade+="-";}; System.out.println(score+"的等级是"+grade);} else System.out.println("Input score error!");
int year, month; int days; Scanner sc = new Scanner(System.in); System.out.print("请输入年份值:"); year = sc.nextInt(); System.out.print("请输入月份值:"); month = sc.nextInt(); switch(month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: days = 31; break; case 4: case 6: case 9: case 11: days = 30; break; case 2: if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0) days = 29; else days = 28; break; default: days = 0; } if(days != 0) { System.out.print(year + "年" + month + "月有" + days + "天。" ); } else { System.out.print("Input error!");
-
int num1, num2;
String operator;
double result = 0.0;
Scanner sc = new Scanner(System.in);
System.out.println("*******四则运算*******");
System.out.println("输入四则算式(数字和运算符间加空格,如3 + 5):");
num1 = sc.nextInt();
operator = sc.next();
num2 = sc.nextInt();
switch(operator) {
case "+":
result = num1 + num2;
break;
case "-":
result = num1 - num2;;
break;
case "*":
result = num1 * num2;;
break;
case "/":
if(num2 != 0) {
result = (double)num1 / num2;
} else {
System.out.println("Input error!");
System.exit(0);
}
break;
default:
System.out.println("Input error!");
System.exit(0);
}
System.out.println(num1 + operator + num2 + " = " + result);
循环
while
import java.util.*;
public class study {
public static void main(String[]args){
int n, m = 0, x, a;
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数");
n = sc.nextInt();
a = n;//备份n
System.out.print("逆序输出为");
while (n != 0) {
System.out.print(n % 10 + "\t");
n /= 10;
}//将一个整数的各位数字逆序输出
n = a;
while (n != 0) {
n /= 10;
m += 1;
}
System.out.println("这个数共有" + m + "位数字");//求一个整数的位数
n = a;
m = 0;
while (n != 0) {
m += n % 10;
n /= 10;
}
System.out.println("各位数字之和为" + m);//求一个整数的各位数字之和
n = a;
m = 0;
while (n != 0) {
if (m < n % 10) {
m = n % 10;
}
n /= 10;
}
System.out.println("各项数字最大值为:" + m);//求一个整数的各位数字最大值
n = a;
m = 0;
System.out.println("逆序为");
while (n != 0) {
System.out.print(n % 10);
m = m * 10 + n % 10;
n /= 10;
}//求一个整数的逆序数;或者while (n!=0){System.out.print(n%10);n/=10;}
}
}
import java.util.*;
public class study {
public static void main(String[]args){
int n;
Scanner sc = new Scanner(System.in);
do {
System.out.println("输入考试成绩(0~100):");
n = sc.nextInt();
if (n > 100 || n < 0) {
System.out.print("该值不允许输入,请重新");
}
;
} while (n < 0 || n > 100);
System.out.print("成绩为:" + n);
}
}
import java.util.*;
public class study {
public static void main(String[]args){
int m, n;
int t;
Scanner sc = new Scanner(System.in);
System.out.println("请输入两个整数(用空格隔开)");
n = sc.nextInt();
m = sc.nextInt();
System.out.print(m + "和" + n);
while (n != 0) {
t = m % n;
m = n;
n = t;
}
System.out.print("的最大公约数为:" + m);
}
}
String str;
int nLowercase, nUppercase, nDigit, nOther;
int index = 0;
char ch;
Scanner sc = new Scanner(System.in);
System.out.print("请输入一行字符:");
str = sc.nextLine();
nLowercase = nUppercase = nDigit = nOther = 0;
while(index < str.length()){
ch = str.charAt(index);
if(ch >= 'a' && ch <= 'z'){
nLowercase++;
}
else if(ch >= 'A' && ch <= 'Z'){
nUppercase++;
}
else if(ch >= '0' && ch <= '9'){
nDigit++;
}
else{
nOther++;
}
index++;
}
System.out.println(str + "各种字符个数统计:");
System.out.println("大写字母个数:" + nUppercase);
System.out.println("小写字母个数:" + nLowercase);
System.out.println("数字字符个数:" + nDigit);
System.out.println("其他字符个数:" + nOther);
int nBinary, nDecimal;
int base;
Scanner sc = new Scanner(System.in);
System.out.print("请输入只有0和1的二进制数:");
nBinary = sc.nextInt();
nDecimal = 0;
base = 1;
while(nBinary != 0){
nDecimal += nBinary % 10 * base;
base *= 2;
nBinary /= 10;
}
System.out.println("转换为十进制是:" + nDecimal);
int n;
int i = 2;
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数:");
n = sc.nextInt();
System.out.print(n + "=");
while (n > i) {
if (n % i == 0) {
System.out.print(i + "*");
n /= i;
} else i++;
}
System.out.print(n);
int num, max = 0;
String flag;
int count = 1;
Scanner sc = new Scanner(System.in);
do {
System.out.println("请输入第" + count + "个数:");
if (count == 1) {
num = sc.nextInt();
max = num;
} else {
num = sc.nextInt();
if (num > max) {
max = num;
}
}
System.out.println("是否继续输入");
flag = sc.next();
if ((flag.equals("Y") || flag.equals("y"))) {
count++;
}
} while (flag.equals("Y") || flag.equals("y"));
System.out.println("在这" + count + "个数中,最大值为" + max);
int m = 0;
int n = 0;
do {
m += n;
n++;
} while (m < 10000);
System.out.println("1+2+3+……+" + n + "= " + m);
System.out.println("符合条件的最大值为" + (--n));
-
假设你有10万存款,一年期利率为5%,问要连续存多少年,这笔存款能超过20万?
double save = 100000; int n = 0; double rate = 0.05; while (save < 200000) { save *= (1 + rate); n++; } System.out.println("至少需要连续存" + n + "年");
for
-
观察斐波那契数列前一项除以后一项的结果变化情况。
int m, n; m = 1; n = 1; for (int i = 0; i < 20; i++) { System.out.println(m + " / " + n + " = " + (double) m / n); n = m + n; m = n - m; }
-
猜数字游戏:十次之内猜中一个随机生成的0-1000之内的整数。
int nRandom, nInput; int i; //猜数的次数 Scanner sc = new Scanner(System.in); Random rd = new Random(); //nRandom = (int)(Math.random() * 1000); nRandom = rd.nextInt(1000); System.out.println(nRandom); for (i = 1; i <= 10; i++) { System.out.printf("请输入1000以内的整数(第%d次):", i); nInput = sc.nextInt(); if (nInput > nRandom) { System.out.println("太大了,重新输入!!"); } else if (nInput < nRandom) { System.out.println("太小了,重新输入!!"); } else { break; } } if (i > 10) { System.out.println("很遗憾,猜了十次都没猜对。"); } else { System.out.printf("恭喜你,在第%d次猜对了.\n", i); }
-
求所有的三位“水仙花数”:该数等于各位数字的立方和。
int x, y, z; for (int n = 100; n < 1000; n++) { x = n % 10; y = n / 10 % 10; z = n / 100; if (x * x * x + y * y * y + z * z * z == n) { System.out.println(n); } }
-
求所有四位数中的“牡丹花数”:该数等于前两位和后两位之和的平方。
int x, y; for (int n = 1000; n < 10000; n++) { x = n / 100; y = n % 100; if ((x + y) * (x + y) == n) { System.out.println(n) } }
-
随机产生两个100以内的整数,计算其和并计分(每做对一题得10分,满分100)。
int num1, num2, sum; int score = 0; Random rd = new Random(); Scanner sc = new Scanner(System.in); for (int i = 1; i <= 10; i++) { num1 = rd.nextInt(100); num2 = rd.nextInt(100); System.out.print("第" + i + "题:"); System.out.print(num1 + " + " + num2 + " = "); sum = sc.nextInt(); if (num1 + num2 == sum) { score += 10; System.out.println("正确"); } else { System.out.println("错误"); } } System.out.println("你的得分是:" + score); }
-
顺序分割并输出一个整数的各位数字。
import java.util.Scanner; public class Report { public static void main(String[]args) { int num, reverse = 0; Scanner sc = new Scanner(System.in); System.out.println(System.in); System.out.println("请输入一个整数:"); num = sc.nextInt(); System.out.print("该整数从高位开始的各位数字是:"); for (reverse = 0; num != 0; num /= 10) { reverse *= 10; reverse += num % 10; } for (num = 0; reverse != 0; reverse /= 10) { System.out.print(reverse % 10 + " "); } } }
-
输出九九乘法表。
public class Report { public static void main(String[]args) { int i,j; for(i=1;i<10;i++) { for (j = 1; j <= i; j++) { if (j == i) { System.out.println(i + "*" + j + "=" + i * j + "\t"); } else { System.out.print(i + "*" + j + "=" + i * j + "\t"); } } } } }
-
求出1000以内的所有“完数”:该数等于它的所有约数(除了自己)之和。
import java.util.*; public class Report { public static void main(String[]args) { int num, i, j; int sum; for(i = 1; i < 1000; i++) { sum = 0; for(j = 1; j < i; j++) { if(i % j == 0) { sum += j; } } if(sum == i) { System.out.print(i + "是完数:" + i + " = 1"); for(j = 2; j < i; j++) { if(i % j == 0) { System.out.print(" + " + j); } } System.out.println(); } } } }
-
输出满足以下条件的三位数:该数中没有重复的数字。
int i, j, k; int count = 0; for(i = 1; i <= 9; i++) { for(j = 0; j <= 9; j++) { for(k = 0; k <= 9; k++) { if(i != j && i!= k && j != k) { System.out.printf("%-5d", 100*i+10*j+k); count++; if(count % 10 == 0) System.out.println(); } } } } System.out.println("\n合计个数:" + count);
-
一行显示10个数。输出由*构成的橄榄形图形。
int i, j, k; for(i = 1; i <= 9; i++) { if(i <= 5) { for(j = 1; j <= 5 - i; j++) System.out.print("\t"); for(k = 1; k <= 2 * i - 1; k++) System.out.print("*"); } else { for(j = 1; j <= i - 5; j++) System.out.print("\t"); for(k = 1; k <= 19 - 2 * i; k++) System.out.print("*"); } System.out.println(); }
-
abc队和xyz队对战,已知a的对手不是x,c的对手不是x和z,求问对战名单。
int i, j, k; for(i = 1; i <= 9; i++) { if(i <= 5) { for(j = 1; j <= 5 - i; j++) System.out.print(" "); for(k = 1; k <= 2 * i - 1; k++) System.out.print("*"); } else { for(j = 1; j <= i - 5; j++) System.out.print(" "); for(k = 1; k <= 19 - 2 * i; k++) System.out.print("*"); } System.out.println(); }
break与continue
-
判断一个整数是不是质数。
int num, i; Scanner sc = new Scanner(System.in); System.out.print("请输入一个整数:"); num = sc.nextInt(); for(i = 2; i < num; i++) { if(num % i == 0) { break; } } if(i == num) { System.out.println(num + "是质数"); } else { System.out.println(num + "不是质数"); }
int num, i; int n; Scanner sc = new Scanner(System.in); System.out.print("请输入一个整数:"); num = sc.nextInt(); n = (int)Math.sqrt(num); //循环至√num即可 for(i = 2; i <= n; i++) { if(num % i == 0) { break; } } if(i > n) { System.out.println(num + "是质数"); } else { System.out.println(num + "不是质数"); }
int num, i; int n; boolean flag; Scanner sc = new Scanner(System.in); System.out.print("请输入一个整数:"); num = sc.nextInt(); n = (int)Math.sqrt(num); //循环至即可 flag = true; for(i = 2; flag && i <= n; i++) { if(num % i == 0) { flag = false; } } if(flag) { System.out.println(num + "是质数"); } else { System.out.println(num + "不是质数"); }
-
输入一个正整数n,输出所有和为n的连续正整数序列。
int num, i; int n, count = 0; boolean flag; for (num = 2; num < 200; num++) { n = (int) Math.sqrt(num); flag = true; for (i = 2; flag && i <= n; i++) { if (num % i == 0) { flag = false; } } if (flag) { System.out.printf("%-5d", num); count++; if(count % 10 == 0) System.out.println(); } } System.out.println("\n200以内质数个数:" + count);
-
求1000以内最大的20个质数之和
int num, i; int n, count = 0, sum = 0; boolean flag; for (num = 1000; num > 2; num--) { n = (int) Math.sqrt(num); flag = true; for (i = 2; flag && i <= n; i++) { if (num % i == 0) { flag = false; } } if (flag) { System.out.print(num); count++; //统计质数个数 sum += num; //求质数累加和 if(count < 20){ System.out.print("+"); } else{ break; } } } System.out.println("\n1000以内最大的20个质数之和:" + sum);