1、计算输入数据的阶乘值
首先,要先对题目进行分析,计算输入数据的阶乘值,怎么输入?怎么计算?数据的合法性?这就是问题。
最开始扫描录入数据的方法是Scanner sc=new Scanner(System.in); int i=sc.nextInt();
java中的import java.util.Scanner; 是一个类,可以用这个类来从控制台写入数据(可以是int,string等类型)
还有就是大家可以调用System.out.println(Integer.MAX_VALUE);System.out.println(Integer.MIN_VALUE);来确定int存储数据的范围为-2147483648到2147483647,阶乘如果超过12,就会在Console中显现的结果完全不同,所以用while循环来确定输入数据的范围;
最后就是计算,可以用一个for循环进行输出结果
package com.yan3;
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) {
// 计算输入数据的阶乘值
System.out.println("请输入整数:");
Scanner sc = new Scanner(System.in);
int kk = 0;
while (true) {
// 输入的整数值应该是一个正整数
kk = sc.nextInt();
if (kk > 0 && kk <= 12)
break;
else
System.out.println("您输入的值为" + kk + ",需要输入的是一个小于等于12的正整数!");
}
int res = 1;
for (int k = 1; k <= kk; k++) {
res *= k;
}
System.out.println(kk + "! =" + res);
sc.close();
}
}
2、互换两个数的值
互换两个数据的值,就是先随机输入两个数据,可以用i=i+j; j=i-j;//实际上j=(i+j)-j=i i=i-j//实际上i=(i+j)-i=j,这里有很多方法,看自己的喜好去做
package com.yan3;
import java.util.Scanner;
public class Test3 {
public static void main(String[] args) {
// 互换两个数的值(不允许使用中间变量)
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个整数:");
int i = sc.nextInt();
System.out.println("请输入第二个整数:");
int j = sc.nextInt();
System.out.println("您输入的数据为:(" + i + "," + j + "),更换后为(");
// i = i + j;
// j = i - j;// 实际j=(i+j)-j=i
// i = i - j;// 实际i=(i+j)-i=j
i = i ^ j;// a = 011^101 = 110
j = i ^ j;// b = 110^101 = 011
i = i ^ j;// a = 110^011 = 101
System.out.println(i + "," + j + ")");
sc.close();
// Scanner sc = new Scanner(System.in);
// System.out.println("请输入第一个整数:");
// int a = sc.nextInt();
// System.out.println("请输入第二个整数:");
// int b = sc.nextInt();
// System.out.println("您输入的数据为:(" + a + "," + b + "),更换后为(");
// int tmp = a;
// a = b;
// b = tmp;
// System.out.println(a + "," + b + ")");
// sc.close();
}
}
3、输出三个数中的最大值和最小值
这里求三个数中的最大值和最小值,可以用三目运算符 x?y:z 去做,也可以用数据库Math.max(k1,k2); Math.min(k1,k2);去做,也可以用int max=Integer.MIN_VALUE;int min=Integer.MAX_VALUE;进行比较计算
package com.yan3;
public class Test4 {
public static void main(String[] args) {
// 3、输出三个数中的最大值和最小值 第一种写法
// Scanner sc = new Scanner(System.in);
// System.out.println("请输入第一个数:");
// double i = sc.nextDouble();
// System.out.println("请输入第二个数:");
// double j = sc.nextDouble();
// System.out.println("请输入第三个数:");
// double k = sc.nextDouble();
//
// double max = i > j ? i : j;
// max = max > k ? max : k;
// System.out.println("三个数中最大值为" + max);
//
// double min = i < j ? i : j;
// min = min < k ? min : k;
// System.out.println("三个数中最小值为" + min);
// 输出三个数中的最大值和最小值 第二种写法
// int k1 = 89;
// int k2 = 63;
// int k3 = 999;
//
// int max = Integer.MIN_VALUE;
// int min = Integer.MAX_VALUE;
//
// if (max < k1)
// max = k1;
// if (max < k2)
// max = k2;
// if (max < k3)
// max = k3;
//
// if (min > k1)
// min = k1;
// if (min > k2)
// min = k2;
// if (min > k3)
// min = k3;
// System.out.println("最大值为" + max + ",最小值为" + min);
// 输出三个数中的最大值和最小值 第三种写法
int k1 = 56;
int k2 = 23;
int k3 = 32;
// Math数学库
int max = Math.max(k1, k2);
max = Math.max(max, k3);
int min = Math.min(k1, k2);
min = Math.min(min, k3);
System.out.println("最大值为" + max + ",最小值为" + min);
}
}
4、输出1到100的奇数,每行输出6个
这道例题很简单,只需要输入的数据求余即可
package com.yan3;
public class Test5 {
public static void main(String[] args) {
// 4、输出1-100的奇数(每行输出6个) 第一种写法
int count = 0;
int i = 0;
while (++i < 101) {
if (i % 2 == 1) {
count++;
System.out.print(i + "\t");
}
if (count % 6 == 0)
System.out.println("\n");
}
// 4、输出1-100的奇数(每行输出6个) 第二种写法
// int cc = 0;
// for (int i = 1; i < 101; i++) {
System.out.println();输出完成自动换行
System.out.print();输出完成不会自动换行
// if (i % 2 != 0) {
// System.out.print(i + "\t");
// cc++;
// if (cc % 6 == 0)
// System.out.println();
//
// }
// }
}
}
5、1到100可以被3整除的数,每行输出6个(附加题:1到1000可以被7整除的数,每行输出9个)
这道题和上一题很类似,也是求余的一种用法,还涉及到了循环语句的计算
package com.yan3;
public class Test8 {
public static void main(String[] args) {
// 7、1~100可以被3整除的数
// while
// int i = 1;
// int count = 0;
// while (++i < 101) {
// if (i % 3 == 0) {
// System.out.println(i+"\t");
// count++;
//
// if(count%6==0)
// System.out.println();
// }
// }
// System.out.println("\n"+"1~100可以被3整除的数共有" + count + "个");
// do/while
// int i = 1;
// int count = 0;
// do {
// if (i % 3 == 0) {
// System.out.print(i + "\t");
// count++;
// if (count % 6 == 0)
// System.out.println();
// }
// } while (++i < 101);
// System.out.println("\n" + "1~100可以被3整除的数共有 " + count + " 个");
// for
// int count = 0;
// for (int i = 1; i < 101; i++) {
// if (i % 3 == 0) {
// System.out.print(i + "\t");
// count++;
//
// if (count % 6 == 0)
// System.out.println();
// }
// }
// System.out.println("\n" + "1~100可以被3整除的数共有 " + count + " 个");
// 1~1000可以被7整除的数,每行9个
int i = 1;
int count = 0;
while (++i < 1001) {
if (i % 7 == 0) {
System.out.print(i + "\t");
count++;
if (count % 9 == 0)
System.out.println();
}
}
System.out.println("\n" + "1~1000可以被7整除的数为 " + count + " 个");
}
}
6、求100以内所有能被3整除但不能被5整除的个数,每行输出6个
package com.yan3;
public class Test9 {
public static void main(String[] args) {
// 8、求 100 以内所有能被 3 整除但不能被 5 整除的个数
int i = 1;
int count = 0;
// while
// while (++i < 101) {
// if (i % 3 == 0 && i % 5 != 0) {
// System.out.print(i + "\t");
// count++;
//
// if (count % 6 == 0)
// System.out.println();
// }
// }
// for
// for (i = 1; i < 101; i++) {
// if (i % 3 == 0 && i % 5 != 0) {
// System.out.print(i + "\t");
// count++;
// if (count % 6 == 0)
// System.out.println();
// }
// }
// do/while
do {
if (i % 3 == 0 && i % 5 != 0) {
System.out.print(i + "\t");
count++;
if (count % 6 == 0)
System.out.println();
}
} while (++i < 101);
System.out.println("\n" + "100以内所有能被 3 整除但不能被 5 整除的个数为 " + count + "个");
}
}