首页 / JAVA / 在Java中乘以三维数组
在Java中乘以三维数组
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在Java中乘以三维数组,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3009字,纯文字阅读大概需要5分钟。
内容图文
问题是:假设你有一个3d数组,Z(所以int [] [] [] Z = new int [n] [n] [n]).你要做的是打印一个新的3d数组,即Z,X倍的乘法.
说你有
z[3][3][3] = {
{{3,3,3}{3,3,3}}
{{3,3,3}{3,3,3}}
{{3,3,3}{3,3,3}}
}
和x = 3(用户输入)
目标是打印出来:
Z[0]
Z[1]
XXXXXXX
Z[0]*Z[0]
Z[1]*Z[1]
XXXXXXX
Z[0]*Z[0]*Z[0]
Z[1]*Z[1]*Z[1]
由于这是一个正方形(实际上是立方体……)矩阵,每个打印出的矩阵将具有相同的尺寸.到目前为止我所拥有的是:
public static void main(String[] args) {
Scanner getIt = new Scanner(System.in);
System.out.println("Input 1 integer n: ");
int n = getIt.nextInt();
if (n > 0){
final double M[][][] = new double[n][n][n];
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
for (int k = 0; k < n; k++)
M[i][j][k] = 3.0;
System.out.println("Input 1 integer p: ");
int p = getIt.nextInt();
if(p > 0){
for(int q = 1; q <= p; q++){
for (int i = 0; i < n; i++){
for (int j = 0; j < n; j++){
for (int k = 0; k < n; k++){
System.out.printf("%f ", Math.pow(matrixMult(M[i], M[i])[j][k], q));
}
System.out.println("\n");
}
}
System.out.println("xxxxxxxxxxxxxxxxxxxxx");
}
}
else{
System.out.println("Woops, you entered a negative p.");
}
}
else{
System.out.println("Woops, you entered a negative n.");
}
}
public static double[][] matrixMult(double a[][], double b[][]) {
int aRows = a.length;
int aCols = a[0].length;
int bCols = b[0].length;
double[][] result = new double[aRows][bCols];
for(int i = 0; i < aRows; i++){
for(int j = 0; j < bCols; j++){
for(int k = 0; k < aCols; k++){
result[i][j] += a[i][k] * b[k][j];
}
}
}
return result;
}
解决方法:
Paulsm4的建议是死的 – 你不想只用两个函数来完成整个事情.您应该拥有输入数组,用户输入,乘法和输出,每个都在它们自己的函数中.你可能会发现其他机会将你的程序分开 – 我强烈建议尽可能地将你的程序分解为函数,特别是因为你可以比大件更有效地调试小块. (你当前的程序有什么问题?输入?输出?计算?数据存储大小,正如亚当注意到的那样?很难说,因为你不知道哪些功能完美运行,哪些仍然有问题.)
我想建议一个进一步的改变:如果你可以提供帮助,不要把你的测试的其他条款放在如此遥远的地方.考虑改变这个:
int n = getIt.nextInt();
if (n > 0){
/* loop */
System.out.println("Input 1 integer p: ");
int p = getIt.nextInt();
if(p > 0){
/* loop loop loop */
}
else{
System.out.println("Woops, you entered a negative p.");
}
}
else{
System.out.println("Woops, you entered a negative n.");
}
对此:
int n = getIt.nextInt();
if (n <= 0) {
System.out.println("Woops, you entered a negative n.");
/* exit or recover */
}
System.out.println("Input 1 integer p: ");
int p = getIt.nextInt();
if (p <= 0) {
System.out.println("Woops, you entered a negative p.");
/* exit or recover */
}
/* loop */
/* loop loop loop */
以这种方式编写代码将使维护变得更加容易
也许还可以更容易地发现可以移入他们的单位
自己的惯例. (考虑一个带有String提示符的函数
参数中的扫描仪并返回大于零的数字 – 它可以
根据需要提示并重新提示,结果将是你的
主要代码需求 – 尽可能保持清洁.这个功能更多
当代码以这种方式重写时显然很有用.)
至于把你带到这里的错误,我认为这可能是罪魁祸首:
System.out.printf("%f ", Math.pow(matrixMult(M[i], M[i])[j][k], q));
你在这里计算很多,但根本不存储结果.你不需要这些结果进一步计算吗?
内容总结
以上是互联网集市为您收集整理的在Java中乘以三维数组全部内容,希望文章能够帮你解决在Java中乘以三维数组所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。