2013-02-18 2 views
0

J'expérimente des tableaux et, bien que je puisse comprendre comment saisir les éléments d'un tableau 2D en fonction de l'entrée de l'utilisateur, je n'arrive pas à comprendre comment inviter l'utilisateur à entrez des lignes entières du tableau 2d (avec un espace entre chaque nombre) plutôt que d'entrer chaque nombre, puis appuyez sur Entrée. Pourrais-je obtenir de l'aide ici? Je sais que ce sera sur mon prochain test, merci les gars!Comment entrer une rangée entière d'éléments dans un tableau 2d

Voici mon code:

import java.util.Scanner; 

public class NewArray 
{ 
    public static void main(String[] args) 
    { 
     Scanner input = new Scanner(System.in); 
     System.out.print("Enter the number of rows: "); 
     int Rows = input.nextInt(); 
     System.out.print("Enter the number of columns: "); 
     int Columns = input.nextInt(); 

     int[][] array = new int[Rows][Columns]; 

     System.out.println("Enter the numbers in array: "); 
     for (int i = 0; i < array.length; i++) 
     { 
      for (int j = 0; j < array[i].length; j++) 
       array[i][j] = input.nextInt(); 
     } 
     System.out.println(isConsecutiveFour(array)); 
    } 

Répondre

0
boucle

rows fois, et String l = input.nextLine();

diviser la chaîne avec séparateur (espace ou une virgule ou point-virgule, vous pouvez le définir).

bien sûr, mettre en œuvre une logique de validation. Nan cas par exemple, la taille du tableau ne correspond pas à fente columns cas, etc.

BTW, basé sur la convention de nommage Java, en utilisant mieux rows, columns comme nom. sinon, ils ressemblent à des cours ....

0

Eh bien, vous pouvez les inviter pour chaque ligne ...

for (int i = 0; i < array.length; i++) { 
    // Prompt user to enter column values for each row 
    System.out.printf("Enter %d integers for row %d/%d (delimeted by spaces): ", 
    columns, i+1, rows); 
    for (int j = 0; j < array[i].length; j++) 
    array[i][j] = input.nextInt(); 
} 

sortie

[email protected]:~$ java NewArray 
Enter the number of rows: 4 
Enter the number of columns: 3 
Enter the numbers in array: 
Enter 3 integers for row 1/4 (delimeted by spaces): 1 2 3 
Enter 3 integers for row 2/4 (delimeted by spaces): 4 5 6 
Enter 3 integers for row 3/4 (delimeted by spaces): 7 8 9 
Enter 3 integers for row 4/4 (delimeted by spaces): 10 11 12 
0

Une façon de faire ce que vous demandez est pour entrer ce qu'ils tapent comme une ligne entière. Ensuite, vous regardez la ligne et vérifiez les valeurs suffisantes et échouez d'une manière si elles ne l'entrez pas comme vous le faites.

Le problème est que cela le rend vraiment irritant pour l'utilisateur. Qu'arrive-t-il s'il a besoin de 10 chiffres et qu'il entre 9 ou 11 en raison d'une erreur de calcul ou d'un espace supplémentaire où une période devrait être? Qu'est ce que tu vas faire?

Beaucoup dépend de la façon dont votre programme répond à l'utilisateur ne pas le faire "juste".

Ainsi, s'ils en saisissent trop, vous pouvez faire écho aux premiers chiffres (jusqu'au nombre requis) et demander si c'est correct de les utiliser. Ils répondent alors Y ou N.

S'ils entrent trop peu, vous pouvez faire écho à ceux qu'ils ont entrés, puis demander un nombre supplémentaire pour remplir le nombre requis. Tout cela se transforme en beaucoup de code à écrire et il peut être persnickety - vous devez l'obtenir juste ou, encore une fois, il a confondu l'utilisateur.

Une autre solution possible consiste à les laisser entrer un par un et vous leur renvoyer des informations pour qu'ils sachent où ils se trouvent. Quelque chose comme "S'il vous plaît entrer l'élément 4 sur la rangée 3:" les aiderait à le suivre. Peut-être que plus vous examinerez cela, plus vous pourrez voir la valeur des interfaces utilisateur courantes d'aujourd'hui que ce soit pour des applications autonomes ou des applications Web. Sur le Web, par exemple, vous pouvez leur montrer un formulaire avec des lignes et des colonnes de zones de texte et réafficher facilement cette page si certaines des cases ne sont pas remplies correctement. L'interface utilisateur basée sur la console a été utilisée il y a de nombreuses années mais elle laisse beaucoup à désirer.

1

Vous pouvez également le faire en prenant chaque ligne comme une entrée et ensuite avec délimiteur prendre le caractère d'entrée par caractère. par exemple.

String s = sc.next(); 

     for(int j=0;j<s.length();j++) 
     { 
      array[i][j] = Character.getNumericValue(s.charAt(j)); 

     } 

ou vous pouvez faire

tableau

[i] [j] = s.charAt (j) - '0';

Questions connexes