【问题标题】:How to retrieve diagonal of String matrix in separate list?如何在单独的列表中检索字符串矩阵的对角线?
【发布时间】:2018-08-08 08:40:18
【问题描述】:

我想将字符串矩阵的对角线检索到单独的列表中。请帮我。我花了一整天的时间。但没有成功。

二维数组结构:

Matrix{{"Toyata","Fortuner","Price", "tuesday", "deliver", "Working"},
        { "Ford","Classic ","Price", "Wedday", "Not Deliver", "Working"}, 
         {"Tata","Jaguar","Price", "Satday", "deliver", "Working" }
        {"Farari","etc","Price", "sunday", "deliver", "NotWorking" }

我想从上面的矩阵中检索第一行和第三行。即

{"Toyata","Fortuner","Price", "tuesday", "deliver", "Working"},
   {"Tata","Jaguar","Price", "Satday", "deliver", "Working" }

这是我的代码:

    public  Object[][] geCodes(){
   Object [][] Matrix{
               {"Toyata","Fortuner","Price", "tuesday", "deliver", "Working"},
                { "Ford","Classic ","Price", "Wedday", "Not Deliver", "Working"}, 
                 {"Tata","Jaguar","Price", "Satday", "deliver", "Working" }
                {"Farari","etc","Price", "sunday", "deliver", "NotWorking" }};
     Object  Diagonal1=null;
     List<Object> che= new LinkedList<Object>();
        for (int i = 0, j =0; i< matrix.length && j < matrix[0].length; i++, j++) {
             Diagonal1=   matrix[i][j];
             che.add(Diagonal1);

     }
        System.out.println("*******"+che);
                return matrix;

    }

【问题讨论】:

  • 请参阅:Why is “Can someone help me?” not an actual question? 另请参阅:寻求调试帮助的问题(“为什么此代码不起作用?”)必须包括所需的行为、特定问题或错误以及重现所需的最短代码它在问题本身。没有明确问题陈述的问题对其他读者没有用处。请参阅:How to create a Minimal, Complete, and Verifiable example
  • 你得到的输出是什么?
  • 那么你想要对角线还是第一和第三行?
  • 嗨,Ivan,感谢您的快速回复,我想要第一排和第三排。基本上是对角线。
  • 嗨 Garima,我的输出是 {Toyota, 'Classic', 'Price', Sunday}

标签: java arrays multidimensional-array


【解决方案1】:

你并没有说你认为你在说什么。对角线表示第一行的第一个元素,第二行的第二个元素....最后一行的最后一个元素。

您创建一个循环并获得 matrix[i][i] 位置。您不需要“i”和“j”,因为它们是相同的。

如果你想获得第一行和他们的第一行,那么你就这样做。

Object[][] matrix2 = new Object[2][6];
matrix2[0] = Matrix[0];
matrix2[1] = Matrix[2];

您的代码:

public  Object[][] geCodes(){
    Object [][] Matrix{
        {"Toyata","Fortuner","Price", "tuesday", "deliver", "Working"},
        {"Ford","Classic ","Price", "Wedday", "Not Deliver", "Working"}, 
        {"Tata","Jaguar","Price", "Satday", "deliver", "Working" }
        {"Farari","etc","Price", "sunday", "deliver", "NotWorking" }};


    Object[][] Diagonal1= new Object[2][6];
    Diagonal1[0] = Matrix[0];
    Diagonal1[1] = Matrix[2];

    return matrix; // I don't know why you are returning matrix, 
                   // you probably should be returning the new array, Diagonal1

}

你真的应该使用字符串而不是对象。

【讨论】:

  • 谢谢约翰,这正是我要找的。返回矩阵被错误地留下了。
【解决方案2】:

我真的不明白你是想要对角线还是第一和第三,但这里有一个例子:

    String[][] matrixStart = {
                {"Toyata", "Fortuner", "Price", "tuesday", "deliver", "Working"},
                {"Ford", "Classic", "Price", "Wedday", "Not Deliver", "Working"},
                {"Tata", "Jaguar", "Price", "Satday", "deliver", "Working"},
                {"Farari", "etc", "Price", "sunday", "deliver", "NotWorking"}};
    List<String[]> matrixEnd = new LinkedList<>();
    for(int i = 0; i < matrixStart.length; i++)
        {
            if(i == 1 || i == 3)
            {
            matrixEnd.add(matrixStart[i]);
            }
        }

    // Printing what's in your matrixEnd
    System.out.println("MatrixEnd :");
    String sysout;
    for(String[] line: matrixEnd)
    {
        sysout = "";
        for(String element: line)
        {
            sysout += element + ", ";
        }
        System.out.println("[" + sysout.substring(0, sysout.length() - 2) + "]");
    }

最后你会得到类似的东西:

MatrixEnd :
    [Ford, Classic, Price, Wedday, Not Deliver, Working]
    [Farari, etc, Price, sunday, deliver, NotWorking]

另外,你应该使用 String 而不是 Objects 并用小写命名你的变量,最后打印“che”不会打印里面的内容,而只会打印引用,除非你覆盖了 LinkedList 的 toString()。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-24
    相关资源
    最近更新 更多