Avatar billede touel Nybegynder
21. marts 2005 - 10:48 Der er 18 kommentarer og
1 løsning

String og int arrays

Hvis jeg har et int array med nogle værdier i, og jeg gerne vil tilføje disse værdier i et String array, for at kunne manipulere med tallene,hvordan skriver man det op... det kode jeg har prøver jeg ved brug af almindelig String at tilføje int arrays, hvilket giver følgende resultat : [IIIII.....
Avatar billede bromer Nybegynder
21. marts 2005 - 10:49 #1
Hvilken manipulation er det du skal foretage med tallene som du ikke kan foretage når de er tal?
Avatar billede touel Nybegynder
21. marts 2005 - 10:52 #2
hov glemte lige en ting til. Det skal være således at jeg for hver værdi jeg får ind i StringBuffer fra int array, skal kunne konveretere den til alm String for derefter at kunne manipulere med tallene og bagefter tilbage igen i StringBuffer.....
Avatar billede arne_v Ekspert
21. marts 2005 - 10:52 #3
Var det ikke til dig jeg lavede:

  public static String arr2str(int[] a) {
      StringBuffer sb = new StringBuffer("");
      for(int i = 0; i < a.length; i++) {
        if(i > 0) {
            sb.append(",");
        }
        sb.append(a[i]);
      }
      return sb.toString();
  }

?
Avatar billede arne_v Ekspert
21. marts 2005 - 10:53 #4
Det eneste fornuftige er at lave alle manipulationerne i int arrayet og så
først konvertere til/fra string i forbindelse med input og output
Avatar billede touel Nybegynder
21. marts 2005 - 10:57 #5
hmmm... det er således, at hvis jeg har følgende array :

int [] a = {95520,95201,95201,95302};

så skal de første to tal "95" stå for sig selv, og da de andre tal også starter med 95, skal de stå for sig selv, dvs. uden 95.

Endvidere skal jeg kunne tjekke i arrayet, at hvis der kommer efterfølgende nye tal ind, som eks {55432,55874,556987,55123}, så skal der lægges mærke til at 55 er et nyt tal og så skal den stoppe med at se efter 95 og så starte med 55... og derud af...
Avatar billede touel Nybegynder
21. marts 2005 - 10:58 #6
jo arne, men den skal udvides nu....
Avatar billede arne_v Ekspert
21. marts 2005 - 11:08 #7
Du vil have:

"95,520,201,901,302"

?
Avatar billede touel Nybegynder
21. marts 2005 - 11:11 #8
si senor... og hvis arrayet fortsætter med de efterfølgende 55-tallene skal den skrive noget i stil med "55,432,874,987,123" på ny linie....
Avatar billede arne_v Ekspert
21. marts 2005 - 11:15 #9
package march;

public class ArrayToSpecialString {
    public static String arr2str(int[] a) {
        StringBuffer sb = new StringBuffer("");
        int last = -1;
        for (int i = 0; i < a.length; i++) {
            if (i > 0) {
                sb.append(",");
            }
            if ((a[i] / 1000) != last) {
                sb.append(a[i] / 1000);
                sb.append(",");
                last = a[i] / 1000;
            }
            sb.append(a[i] % 1000);
        }
        return sb.toString();
    }

    public static void main(String[] args) {
        int[] ia = { 95520, 95201, 95201, 95302, 55432, 55874, 55987, 55123 };
        System.out.println(arr2str(ia));
    }
}

udskriver

95,520,201,201,302,55,432,874,987,123
Avatar billede touel Nybegynder
21. marts 2005 - 12:20 #10
hvordan kan jeg få den til at tjekke om at hvis et nyt tal starter, så hop ned til næste linie....
Avatar billede arne_v Ekspert
21. marts 2005 - 12:24 #11
if ((a[i] / 1000) != last) {
                if(i > 0) {
                    sb.append("\r\n");
                }
                sb.append(a[i] / 1000);
                sb.append(",");
                last = a[i] / 1000;
            }

måske
Avatar billede touel Nybegynder
21. marts 2005 - 12:43 #12
det virker faktisk det meste hen af vejen... men det sidste kniber lige lidt....jeg skal vel tage kode stumepen og flette den hist og pist i den øverste eks ???
Avatar billede arne_v Ekspert
21. marts 2005 - 12:46 #13
De her 3 linier:

if(i > 0) {
                    sb.append("\r\n");
                }

skal sættes ind som vist
Avatar billede touel Nybegynder
21. marts 2005 - 12:53 #14
jeg takker for hjælpen arne... jeg skal lave forskellige ting med disse tal, så jeg vil gerne vente med at give point videre..kan evt. spørge igen, hvis andre problemer skulle opstå...Din løsning fungerer fint....
Avatar billede arne_v Ekspert
21. marts 2005 - 12:56 #15
jeg ligger et svar

så finder du ud af hvornår du vil acceptere
Avatar billede touel Nybegynder
21. marts 2005 - 13:58 #16
I følgende kode, hvis jeg støder på et tal, som er forskellig fra det forrige tal, ex. "95410, 55789", så skal 55 ned på en ny linie, og dens efterfølgende tal.
En anden lille ting. En modifikation i programmet så den selv kan se efter om det er de første 2 tal den skal tage eller 3 tal.
ex. "95258,95147,95369,95123" //Her kunne resultat være : "95,258,147,369,123"
det andet ex.
"155987,155654,155321,155753" // Her kunne resultat være :"155,987,654,321,753"


if ((a[i] / 1000) != last)
            {
             
                sb.append(a[i] / 1000);
                sb.append(",");
                last = a[i] / 1000;
       
                if(i > 0)
                {
                    sb.append("\r\n");
                }
            }
            sb.append(a[i] % 1000 );

Jeg er villig til at give flere point, da jeg godt kan se at 15 pt ikke rækker nok....
Avatar billede touel Nybegynder
21. marts 2005 - 14:22 #17
vil det sige arne, at du ikke svarer tilbage på flere af mine spg i denne tråd ????
Avatar billede arne_v Ekspert
21. marts 2005 - 17:02 #18
Det hænder altså at jeg skal lave andet end at svare på spørgsmål her på E ....

:-)
Avatar billede arne_v Ekspert
21. marts 2005 - 17:22 #19
ny linie er vel løst med sb.append("\r\n") ??

og flere end 3 cifre virke rvel også ??

(den deler mellem de sidste 3 cifre og resten uanset hvor mange der nu måtte være)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester