一.一般算法(循环)
view plaincopy to clipboardprint?
public class Test {
public static void main(String[] args) {
int result = 1
for (int i = 1i <= 100i++) {
result *= i
}
System.out.println(result)
}
}
public class Test {
public static void main(String[] args) {
int result = 1
for (int i = 1i <= 100i++) {
result *= i
}
System.out.println(result)
}
}
输出结果为0,因为int无法保存下100的阶乘的结果,100的阶乘的长度至少大于50位,也要大于long,double
二.使用BigInteger大容量运算类
view plaincopy to clipboardprint?
import java.math.BigInteger
public class Test {
public static void main(String[] args) {
BigInteger result = new BigInteger("1")//为result赋初始值,为1
for (int i = 1i <= 100i++) {
BigInteger num = new BigInteger(String.valueOf(i))
result = result.multiply(num)//调用自乘方法
}
System.out.println(result)//输出结果
System.out.println(String.valueOf(result).length())//输出长度
}
}
import java.math.BigInteger
public class Test {
public static void main(String[] args) {
BigInteger result = new BigInteger("1")//为result赋初始值,为1
for (int i = 1i <= 100i++) {
BigInteger num = new BigInteger(String.valueOf(i))
result = result.multiply(num)//调用自乘方法
}
System.out.println(result)//输出结果
System.out.println(String.valueOf(result).length())//输出长度
}
}
计算结果为:93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
产度:158
//早前写的,简易的!import java.util.*
public class TestSum {
static Scanner sc = new Scanner(System.in)
public static void main(String[] args) {
while(true){
init()
}
}
private static void init() {
System.out.println("请输入算数表达式如:1+1回车即可:")
String str = sc.nextLine()
if (!str.matches("[^a-zA-Z()&^#$@!~]+")) {
System.out.println("输入错误重输:请输入算数表达式如:1+1回车即可:")
str = sc.nextLine()
}
int q = 0, h = 0, sum = 0
char chs = ' '
for (int i = 0 i < str.length() i++) {
chs = str.charAt(i)
if (chs == '+' || chs == '-' || chs == '*' || chs == '/') {
q = Integer.valueOf(str.substring(0, i))
h = Integer.valueOf(str.substring(i + 1, str.length()))
switch (chs) {
case '+':
sum = q + h
break
case '-':
sum = q - h
break
case '*':
sum = q * h
break
default:
sum = q / h
break
}
break
}
}
System.out.println("结果="+sum+"\n继续下一轮:")
}
}
lz 你好
以下是我帮你写的代码
(
ps:有两个方法
multi() 用单个变量保存元素的值
multiInArray() 用数组保存元素的值 这种方式是为了你好懂乘积的过程
运行结果都是一样的 只是保存方式
)
import java.util.*public class ArrayMulti{
private int[][] _array = new int[3][3]
public void input(){
Scanner in = new Scanner(System.in)
System.out.println ("输入一个3*3的矩阵:")
for (int i = 0 i < 3 i++) {
for(int j = 0 j < 3 j++){
_array[i][j] = in.nextInt()
}
}
}
public void multi(){//变量形式
int index = 0//记录矩阵乘积的每一个元素
System.out.println ("该矩阵的乘积为:")
for (int k = 0 k < 3 k++) {
for(int i = 0 i < 3 i++){
for (int j = 0 j < 3 j++) {
index += _array[i][j] * _array[j][k]
}
System.out.printf ("%-4d",index)//输出每一个矩阵乘积的元素
index = 0//重新置0 进行下一个元素的计算
}
System.out.println ()//换行
}
}
/*public void multiInArray(){//数组形式
int[][] result = new int[3][3]
System.out.println ("该矩阵的乘积为:")
for (int k = 0 k < 3 k++) {
for(int i = 0 i < 3 i++){
for (int j = 0 j < 3 j++) {
result[i][k] += _array[i][j] * _array[j][k]
//计算每一个元素的值 这个其实就是线代中的公式 [i][j] * [j][k] --> [i][k]
}
}
}
for (int i = 0 i < 3 i++) {
for(int j = 0 j < 3 j++){
System.out.printf("%-4d",result[i][j])
}
System.out.println()
}
}*/
public static void main (String[] args) {
ArrayMulti am = new ArrayMulti()
am.input()
am.multi()//调用变量形式的方法
}
}
运行结果:
输入一个3*3的矩阵:
1 1 1
2 2 2
3 3 3
该矩阵的乘积为:
6 12 18
6 12 18
6 12 18
希望能帮助你哈