2010-11-10 6 views
2

C'est une question de devoirs.Imprimer sur la console en utilisant System.out.write

Question:.

« Utiliser un tableau d'entiers avec la taille 10 et imprimer le contenu de la méthode tableau à l'aide d'écriture()

Note: S'il vous plaît ne pas utiliser le système. Méthode out.println(). "

C'est ce que je l'ai essayé jusqu'à présent, mais il ne fonctionne pas.

int i = 0; 
while (i != array.length) { 
    byte[] temp = new byte[4]; 
    temp[0] = (byte) (array[i] & 256); 
    array[i] = array[i] >> 8; 
    temp[1] = (byte) (array[i] & 256); 
    array[i] = array[i] >> 8; 
    temp[2] = (byte) (array[i] & 256); 
    array[i] = array[i] >> 8; 
    temp[3] = (byte) (array[i] & 256); 
    System.out.write(temp, 0, 4); 
    i++; 
} 

Je ne trouve pas un moyen de le faire, s'il vous plaît aidez-moi.

Merci d'avance. :)

+4

Suis-je le seul qui pense que cela est bien trop compliqué, étant donné l'énoncé du problème? –

+0

Qu'est-ce qui n'allait pas avec la révision 2? –

Répondre

3
void printInt(int x) { 
    String s = String.valueOf(x); 
    for(int i = 0; i < s.length(); i++) { 
    System.out.write(s.charAt(i)); 
    } 
    System.out.write('\n'); 
} 

Edit: plus jolie:

void printInt(int x) { 
    String s = String.valueOf(x); 
    System.out.write(s.getBytes()); 
    System.out.write('\n') 
} 
+0

L'édition doit être comme ceci: - System.out.write (s.getBytes(), 0, s.getBytes(). Length); – ivorykoder

+0

System.out hérite de 'public void write (octet b [])' de 'FilterOutputStream', qui appelle simplement la fonction que vous avez mentionnée, donc c'est juste de la sémantique. – deorst

0

Avoir un tableau d'entiers de taille 10, c'est-à-dire int[] i = new int[10] et d'écrire chacun d'eux dans System.out.write(int b) où la méthode write() accepte un entier comme paramètre.


C'est vraiment laid mais il a travaillé ....

/** 
* 
*/ 
package testcases; 

import java.io.IOException; 
import java.io.UnsupportedEncodingException; 

/** 
* @author The Elite Gentleman 
* 
*/ 
public class Test { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     int[] array = {10, 20, 30, 40, 50}; 

     StringBuffer sb = new StringBuffer(); 
     for (int i: array) { 
      sb.append(String.valueOf(i)); 
     } 

     try { 
      System.out.write(sb.toString().getBytes("UTF-8")); 
     } catch (UnsupportedEncodingException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
} 
+0

Cela ne fonctionne pas: - int i = 0; while (i! = Array.length) { System.out.write (array [i]); i ++; } – ivorykoder

+0

qui ne fonctionnera pas! la méthode 'write' acceptant l'argument 'int' traite l'int comme la représentation en octets. Il est donc très improbable que vous voyiez les valeurs int s'imprimer. – anirvan

0

Pourquoi faites-vous un tableau d'octets? Il existe une méthode write (int b).

Integer array = new Integer[10]; 
// populate array with some integers 
for (Integer i : array) { 
    System.out.write((int)i); 
} 

même le casting (int) i isnt nécessaire que autoboxing prendra soin de cela.

+3

Étant donné que System.out est un PrintStream, tout appel à System.out.write (int) convertira la valeur int en un caractère ASCII. – deorst

+0

Même si cette solution semble avoir évolué, mais c'est essentiellement ** mauvais ** – anirvan

+0

@anirvan, c'est facile de se tromper, mais s'il vous plaît expliquer, pourquoi? – rapadura

0

L'astuce consiste à convertir les chiffres de l'int en char. puis écrivez le caractère en utilisant System.out.write.
Ainsi, par exemple, si l'une des valeurs int est 91. Vous aurez besoin de faire
System.out.write('9');
System.out.write('1');
System.out.flush();

Questions connexes