簡體   English   中英

Java中二維數組轉一維數組

[英]Two dimensional array to one dimensional array in Java

我有一個二維數組,我用掃描儀填充它。 我想將以字母 'a' 開頭的元素復制到一個新的一維數組中,而不使用 ArrayList。 請告知我該怎么做才能使此代碼正常運行。 問題是我怎么知道新數組的大小,而我不知道有多少單詞以字母 a 開頭

這是我到目前為止所擁有的:

import java.util.Scanner;

class Untitled {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        String[][] name = new String[2][2];

        for (int i = 0; i < name.length; i++) {
            for (int j = 0; j < name[i].length; j++) {

                name[i][j] = input.next();

            }

        }
        student(name);

    }

    public static void student(String[][] arr) {
        int count = 0;
        int c2 = -1;
        String[] name2 = new String[count];
        String temp = "";

        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {

                if (arr[i][j].charAt(0) == 'a') {
                    c2++;
                    temp = arr[i][j];
                    name2[c2] = temp;
                    count++;
                    temp = "";
                }

            }//inner

        }//outer

        for (int i = 0; i < name2.length; i++) {
            System.out.println(name2[i]);
        }

    }

}

大小為[n][n] 的二維數組等於大小為n 的一維數組。 如果您想將它們復制到適當的位置,則可以使用此公式,如果您以后想將這些元素復制回適當位置的二維數組,這將非常有用:

int v = i * n + j; // i and j your loops and n is length of rows or colums.


array[v] = array[i][j];

因為在你的代碼中它就像:

int v = 0;

for (int i = 0; i < arr.length; i++) {

for (int j = 0; j < arr[i].length; j++) {

        if (arr[i][j].charAt(0) == 'a') {
             v = i * arra.length +j;
             name2[v] = arr[i][j]; 
                count++;

好的,這是一個工作代碼:

public static void main(String [] args) {
     Scanner input = new Scanner(System.in);
        String[][] name = new String[2][2];
        System.out.println("Enter the name: ");
        for (int i = 0; i < name.length; i++) {
            for (int j = 0; j < name[i].length; j++) {

                name[i][j] = input.next();

            }

        }
        student(name);
    }



public static void student(String[][] arr) {
        int count = 0;
        int v = 0;  
        String[] name2 = new String[arr.length*arr[0].length];
        String temp = "";

        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {

                if (arr[i][j].charAt(0) == 'a') {
                    v = i *+arr[0].length + j;
                    name2[v] = arr[i][j];
                    count++;
                }

            }//inner

        }//outer

        for (int i = 0; i < name2.length; i++) {
            System.out.println(name2[i]);
        }

        System.out.println("printing without nulls");
        //if you don't want null to be printed then do this:
        for (int i = 0; i < name2.length; i++) {
            if(name2[i] != null)
            System.out.println(name2[i]);
        }
    }

我用兩個嵌套的 for 循環做了它,一個用於指示數組大小,另一個用於將元素填充到數組中,它可以工作,但有什么方法可以做得更好

public static void student(String[][] arr) {
    int size = 0;

    for (int i = 0; i < arr.length; i++) {
        for (int j = 0; j < arr[i].length; j++) {


            if (arr[i][j].charAt(0) == 'a') {
                size++;
            }

        }//inner

    }//outer
    String[] name2 = new String[size];


    int count = 0;

    for (int i = 0; i < arr.length; i++) {
        for (int j = 0; j < arr[i].length; j++) {


            if (arr[i][j].charAt(0) == 'a') {
                name2[count] = arr[i][j];
                count++;
            }

        }//inner

    }//outer

    for (int i = 0; i < name2.length; i++) {
        System.out.println(name2[i]);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM