Java 第二个循环中的数组计算不正确

Java 第二个循环中的数组计算不正确,java,arrays,Java,Arrays,当我在第二个for循环中进行计算时,它计算不正确。 我将只计算数组中的最后一个数字,而不是其他两个。 if块计算正确。那么我需要做的就是把每一个 [row][col]值并将其除以temp3,然后将其显示在数组中。 请给我一些建议。 先谢谢你。 阿维 包装测试仪; 导入java.io.FileNotFoundException; 导入java.io.FileReader; 导入java.util.Scanner; 公共类Test1{ 公共静态void main(字符串[]args)引发FileNo

当我在第二个for循环中进行计算时,它计算不正确。 我将只计算数组中的最后一个数字,而不是其他两个。 if块计算正确。那么我需要做的就是把每一个 [row][col]值并将其除以temp3,然后将其显示在数组中。 请给我一些建议。 先谢谢你。 阿维

包装测试仪;
导入java.io.FileNotFoundException;
导入java.io.FileReader;
导入java.util.Scanner;
公共类Test1{
公共静态void main(字符串[]args)引发FileNotFoundException
{      
Scanner infle=新的扫描仪(新的文件阅读器(“one.txt”);
float[]glassdata=新的float[3][4];
loadArray(glassdata,Infle);
显示阵列(glassdata);
System.out.println(“\n******************\n”);
归一化向量(glassdata);
}
公共静态void loadArray(float[][]g,扫描仪填充)
{
for(int row=0;row
您的
normalizationvector
方法有一些冗余,基本上什么都不做。所分配的唯一值是
temp1
temp2
temp3
temp4
,它们是本地值,在for循环的每次迭代中都设置回0

我已经重写了您的代码:它现在只使用一个临时变量,在外部循环的每次迭代开始时都设置为0(您也可以在结束时这样做,但在我看来,如果您在开始时这样做,代码更容易阅读)。 请注意,
temp1
最初为0,每次迭代以所访问数组元素的平方值递增。 形式为
t+=A
的语句是
t=t+A
的缩写。我用它简化了代码

public static void normalizingVector(float [][] g)
{
float temp1;

for (int row = 0; row < g.length; row++)
{
    temp1 = 0;
    //col should start from 0, unless you intended that
    for(int col = 0; col < g[row].length; col++)
        temp1 += (float) Math.pow(g[row][col], 2);
    temp1 = (float) Math.sqrt(temp1);               
    for(int col = 0; col < g[row].length; col++)
        g[row][col] = g[row][col] / Math.sqrt(temp1);
}}
publicstaticvoidnormalizationvector(float[]g)
{
浮动温度1;
for(int row=0;row

您需要添加第二个内部for循环,因为在规范化向量时,您希望向量的每个元素都除以其长度。

您可以添加一个输入、预期输出和实际输出的示例吗?您已经写过,您需要取每个[row][col]值,但在normalizangvector方法中,从第二个值开始列的迭代(即开始列索引等于1)。这种行为是故意实施的吗?
public static void normalizingVector(float [][] g)
{
float temp1;

for (int row = 0; row < g.length; row++)
{
    temp1 = 0;
    //col should start from 0, unless you intended that
    for(int col = 0; col < g[row].length; col++)
        temp1 += (float) Math.pow(g[row][col], 2);
    temp1 = (float) Math.sqrt(temp1);               
    for(int col = 0; col < g[row].length; col++)
        g[row][col] = g[row][col] / Math.sqrt(temp1);
}}