1.循环求和:利用循环语句计算从100加到500的整数的总和。
public static void main(String[] args) {
int sum = 0;
for(int i=100;i<=500;i++) {
sum = sum + i;
}
System.out.println("100到500的和为"+sum);
}
2.字符判断:从键盘输入一个字符,判断这个字符是数字,大写字母,小写字母,还是特殊符号(提示:利用ASCII码对字符类型进行判断,Java中的字符串的方法charAt(0)可。以获取该字符串中的第一个字符)
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个字符");
String str=sc.next();
//获取字符串中的字符
char c=str.charAt(0);
if(c>=48 && c<=57) {//数字
System.out.println(c+"是一个数字");
}else if(c>=65 && c<=90) {//大字母
System.out.println(c+"是一个大写字母");
}else if(c>=97 && c<=122) {//小字母
System.out.println(c+"是一个小写字母");
}else {
System.out.println(c+"是个符号");
}
3.水仙花数:计算三位整数(100-999)的水仙花数。水仙花数是指每一位的立方相加等于该数自己,比如153=1^3+5^3+3^3。(提示:从100循环到999是一个三位数,将其百位数,十位数拆分出来即可,可以利用%取余和/除法进行相关计算。也可以利用三重循环将数字0-9拼出来一个三位数)
public static void main(String[] args) {
//获取三位数(100-999)上的每位数字
for(int i=100;i<1000;i++) {
int a=i/100; //获取百位上的数字
int b=i%100/10; //获取十位上的数字
int c=i%100%10; //获取各位上的数字
if(a*a*a+b*b*b+c*c*c==i) {
System.out.println(i);
}
}
}
4.次方计算:计算X的Y次方,X(底数)和Y(指数)的值由用户输入,只考虑指数为整数的情况,注意各种可能的情况都要考虑周到。(提示:不要使用Java内置的方法Math.pow(x,y)进行运算)
方法一:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入底数");
int d = sc.nextInt();
System.out.println("请输入指数");
int c = sc.nextInt();
结果变量
long result = 1;//相乘
if(c>=0) {
//进行的是正整数的处理
for(int i=1; i<=c; i++) {//通过循环,让底数乘以几次
result = result*d;
}
System.out.println(d+"的"+c+"次方是:"+result);
}else {
for(int i=1; i<=0-c; i++) {
result = result*d;
}
//1.0把类型变为double类型
System.out.println(d+"的"+c+"次方是:"+(1.0/result));
System.out.println(d+"的"+c+"次方是:1/"+result);
}
方法二:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入底数");
int d = sc.nextInt();
System.out.println("请输入指数");
int c = sc.nextInt();
double result = 1.0;//相乘
//获取绝对值,正数还是正数,负数变为正数
int len = Math.abs(c);
for(int i=1; i<=len; i++) {
result =result*d;
}
//当初输入的指数是?
if(c>0) {
//System.out.println(d+"的"+c+"次方是:"+result);
result=result;
}else {
//System.out.println(d+"的"+c+"次方是:"+(1.0/result));
result=(1.0/result);
}
System.out.println(d+"的"+c+"次方是:"+result);
}
5.统计字符:从键盘输入一个字符串,统计这个字符串中包含几个大写字母,几个小写字母,几个数字,几个特殊符号。
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入字符串");
String str = sc.next();
//申明存放大写、小写、数字和特殊符号出现次数变量
int upSum=0;
int lowSum=0;
int numSum=0;
int otherSum=0;
//获取字符串的每个字符
for(int i=0;i<str.length();i++) {
char c =str.charAt(i);//获取指定位置的字符
if(c>=48 && c<=57) {
++numSum;
}
else if(c>=65 && c<=90){
upSum++;
}else if(c>=97 && c<=122) {
lowSum++;
}else {
otherSum++;
}
}
System.out.println("大写字母个数:"+upSum);
System.out.println("小写字母个数:"+lowSum);
System.out.println("数字个数:"+numSum);
System.out.println("特殊个数:"+otherSum);
}
6.组合问题:有红球5个,黑球7个,白球9个,随机取出12个,计算可能的颜色组合有多少种?
public static void main(String[] args) {
int count = 0;//组合成功的个数
for(int red=0; red<=5; red++) {//红球出现的个数
for(int black=0; black<=7; black++) {//黑球出现的个数
for(int white=0; white<=9; white++) {//白球出现的个数
if(red+black+white==12) {
System.out.println("红球:"+red+"黑球:"+black+"白球:"+white);
}
count++;
}
}
System.out.println("组合成功的个数:"+count);
}
}
7.抓球问题:用一元纸币兑换1分,2分和5分的硬币,要求兑换总数为50枚,问可以有多少种组合,每种组合对应1分,2分,5分分别是多少
public class test_10 {
public static void main(String[] args) {
int count=0;
for(int j=0; j<=50; j++) {//最多可以有50个2分
for(int k=0; k<=20; k++) {//最多可以有20个5分
for(int i=0; i<=50-j-k; i++)//1分的个数由2分和5分来确定
if(i+j*2+k*5==100) {
System.out.println("这种组合对应的1分是"+i+"个,"+"2分是"+j+"个,"+"5分是"+k+"个。");
}
count++;
}
}
System.out.println("可以有"+count+"种组合");
}
8.九九乘法表:尝试用for循环完成九九乘法表输出。(提示:可以使用双重循环,内层循环的次数受外层循环变量影响)
public static void main(String[] args) {
for(int i=1;i<=9; i++) {//控制行
for(int j=1; j<=i; j++) {//控制行上的内容
System.out.print(j+"*"+i+"="+i*j+"\t");//制表符
}
System.out.println();//换行
}
}
9.价格猜猜猜:随机产生一个200以内的价格,并且让用户猜测该价格,如果比实际价格高,则输出“高了”,否则输出“低了”,直到猜对为止,输出“对了”,程序结束。(使用Math.random()可生成一个0-1之间的随机小数)。
public class test06 {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
//[0,1)的浮点数 产生出来的是double
double num=Math.random();
//System.out.println(num);
int cNum=(int)(num*200);//真实的数字
System.out.println(cNum);
int price =0;
do {
System.out.println("请输入价格");
price =sc.nextInt();
if(cNum>price) {
System.out.println("低了");
}else if(cNum<price){
System.out.println("高了");
}else {
System.out.println("对了");
}
}while(cNum!=price);
}
10。继续完善上述第9题代码,只给用户猜测5次的机会,如果5次都没有回答正确,则判定用户“超时,输了”。
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
//[0,1)的浮点数 产生出来的是double
double num=Math.random();
//System.out.println(num);
int cNum=(int)(num*200);//真实的数字
System.out.println(cNum);
int price =0;
for(int i=0; i<5; i++) {
System.out.println("请输入价格");
price =sc.nextInt();
if(cNum>price) {
System.out.println("低了");
}else if(cNum<price){
System.out.println("高了");
}else {
System.out.println("对了");
//直接退出程序
System.exit(-1);
}
}
System.out.println("超时了");
}
11.字符串判断:从键盘输入一个字符串,判断该字符串是否可以被转换为一个有效的数字
//输入一个字符串,判断是否可以转为有效数字
//1.只能出现一个+或者-或者.
//2.约束
//3.+ -只能出现在第一个位置
//4..只能一次,(只能在符号之后)
public class test_08 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入字符串");
String str=sc.next();
//标记是否可以转为数字的有个变量
boolean isNumber = true;//能转为数字
//标记.出现的次数
int pointCount=0;
//得到每个字符
for(int i=0;i<str.length(); i++) {
//得到i标记处的字符
char c=str.charAt(i);
if((c=='+'||c=='-') && i==0) {//判断是+或者-符号
continue;//结束本次循环,进行下次
}else if(c=='.') {
pointCount++;
if(pointCount<=1) {
continue;//结束本次循环,进行下次
}else {
isNumber=false;
break;
}
}
if(!(c>=48 && c<=57)) {
isNumber=false;//当不是字符,给标记 量赋值为false,并跳出循环
break;
}
}
String out =isNumber?"能转化为数字":"不能转为数字";
System.out.println(str+out);
}
}
12.将上述代码写在不同的方法中,并通过main()方法进行调用。