Een int-array converteren naar String met de methode toString in Java

Ik probeer de methode toString(int[])te gebruiken, maar ik denk dat ik het verkeerd doe:

http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Arrays.html#toString(int[])

Mijn code:

int[] array = new int[lnr.getLineNumber() + 1];
int i = 0;
System.out.println(array.toString());

De uitvoer is:

[[email protected]

Ik heb ook geprobeerd om op deze manier af te drukken, maar:

System.out.println(new String().toString(array));  // **error on next line**
The method toString() in the type String is not applicable for the arguments (int[])

Ik heb deze code uit grotere en complexere code gehaald, maar ik kan deze indien nodig toevoegen. Maar dit zou algemene informatie moeten geven.

Ik ben op zoek naar uitvoer, zoals in de documentatie van Oracle:

De tekenreeksrepresentatie bestaat uit een lijst van de elementen van de array, tussen vierkante haken (“[]”). Aangrenzende elementen worden gescheiden door de tekens “, ” (een komma gevolgd door een spatie).


Antwoord 1, autoriteit 100%

Wat je zoekt is de Arrays.toString(int[])methode:

import java.util.Arrays;
int[] array = new int[lnr.getLineNumber() + 1];
int i = 0;
..      
System.out.println(Arrays.toString(array));

Er is een statische Arrays.toString-helpermethode voor elk ander primitief java-type; die voor int[]zegt dit:

public static String toString(int[] a)

Retourneert een tekenreeksrepresentatie van de inhoud van de opgegeven array. De tekenreeksrepresentatie bestaat uit een lijst van de elementen van de array, tussen vierkante haken ("[]"). Aangrenzende elementen worden gescheiden door de tekens ", "(een komma gevolgd door een spatie). Elementen worden geconverteerd naar strings zoals door String.valueOf(int). Retourneert "null"als anull is.


Antwoord 2, autoriteit 13%

System.out.println(array.toString());

zou moeten zijn:

System.out.println(Arrays.toString(array));

Antwoord 3, autoriteit 11%

Heel erg eens met @Patrik M, maar het ding met Arrays.toString is dat het “[“en “]”en “,” bevat. in de uitvoer. Dus ik gebruik gewoon een regex om ze op deze manier van outout te verwijderen

String strOfInts = Arrays.toString(intArray).replaceAll("\\[|\\]|,|\\s", "");

en nu heb je een string die terug kan worden geparseerd naar java.lang.Number, bijvoorbeeld

long veryLongNumber = Long.parseLong(intStr);

Of je kunt de java 8-streams gebruiken, als je een hekel hebt aan regex,

String strOfInts = Arrays
            .stream(intArray)
            .mapToObj(String::valueOf)
            .reduce((a, b) -> a.concat(",").concat(b))
            .get();

Antwoord 4, autoriteit 7%

U kunt java.util.Arrays:

String res = Arrays.toString(array);
System.out.println(res);

Uitvoer:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Antwoord 5, autoriteit 5%

De methode toString op een array drukt alleen het geheugenadres af dat u krijgt.
U moet de array doorlopen en elk item afzonderlijk afdrukken

for(int i : array) {
 System.println(i);
}

Antwoord 6

Met behulp van het hulpprogramma beschrijf ik hierheb je meer controle over de tekenreeksrepresentatie die je voor je array krijgt.

String[] s = { "hello", "world" };
RichIterable<String> r = RichIterable.from(s);
r.mkString();                 // gives "hello, world"
r.mkString(" | ");            // gives "hello | world"
r.mkString("< ", ", ", " >"); // gives "< hello, world >"

Antwoord 7

Deze functie retourneert een array van int in de tekenreeksvorm zoals “6097321041141011026”

private String IntArrayToString(byte[] array) {
        String strRet="";
        for(int i : array) {
            strRet+=Integer.toString(i);
        }
        return strRet;
    }

Antwoord 8

Hier is een voorbeeld van het gaan van een lijst met strings, naar een enkele string, terug naar een lijst met strings.

Compilatie:

$ javac test.java
$ java test

Hardlopen:

Initiële lijst:
    "abc"
    "zeker"
    "ghi"
    "jk"
    "mno"
  Als enkele snaar:
    "[abc, def, ghi, jkl, mno]"
  Gereconstitueerde lijst:
    "abc"
    "zeker"
    "ghi"
    "jk"
    "mno"

Broncode:

import java.util.*;
public class test {
    public static void main(String[] args) {
        List<String> listOfStrings= new ArrayList<>();
        listOfStrings.add("abc");
        listOfStrings.add("def");
        listOfStrings.add("ghi");
        listOfStrings.add("jkl");
        listOfStrings.add("mno");
        show("\nInitial list:", listOfStrings);
        String singleString = listOfStrings.toString();
        show("As single string:", singleString);
        List<String> reconstitutedList = Arrays.asList(
             singleString.substring(0, singleString.length() - 1)
                  .substring(1).split("[\\s,]+"));
        show("Reconstituted list:", reconstitutedList);
    }
    public static void show(String title, Object operand) {
        System.out.println(title + "\n");
        if (operand instanceof String) {
            System.out.println("    \"" + operand + "\"");
        } else {
            for (String string : (List<String>)operand)
                System.out.println("    \"" + string + "\"");
        }
        System.out.println("\n");
    }
}

Other episodes