2014-07-21 5 views
0

Я просто заканчиваю эту программу, которую мне пришлось писать для класса. Предполагается, что программа получит вход от пользователя для «ID» и «День», и мой учитель просит нас поместить цикл в оба этих раздела, если пользователь не вводит правильный ID/День. Я написал программу туда, где она может принимать входные данные, но она не сможет отличить, если вход действителен или нет, и будет продолжаться через остальную часть программы. Также в конце массива предполагается напечатать массив, и я это сделал. Я просто хотел бы поместить ID (A, B, C, D) рядом с массивом. Я хотел бы, чтобы конечный результат имел идентификатор слева от массива, перечисленного вниз, чтобы соответствовать таблице 4x5. Если у вас есть какие-либо советы/советы о том, как это можно сделать, это будет оценено по достоинству.Формат Loop и Array

import java.util.Scanner; 
public class Salesman 
{ 
public static void main(String[]args) 
{ 
    Scanner input = new Scanner(System.in); 
    char[] names = {'A', 'B', 'C', 'D'}; 
    char[] days = {'M', 'T', 'W', 'H', 'F'}; 
    double[][] week = new double[4][5]; 
    int stop = 0; 
    char nameInput; 
    char dayInput; 
    double cost; 
    int row; 
    int column; 

    do 
    { 
     System.out.println("Enter the salesman ID as A, B, C or D."); 
     String nameString = input.nextLine(); 
     nameInput = nameString.charAt(0); 
     row = rowSearch(names, nameInput); 

     System.out.println("Enter the day of the week as M, T, W, H, or F"); 
     String dayString = input.nextLine(); 
     dayInput = dayString.charAt(0); 
     column = columnSearch(days, dayInput); 

     System.out.println("Enter the amount of the sale"); 
     cost = input.nextDouble(); 
     week[row][column] = cost; 

     System.out.println("Is there more data? Enter Y for more or N to stop"); 
     input.nextLine(); 
     String dataString = input.nextLine(); 
     char dataInput = dataString.charAt(0); 

     if (dataInput == 'N') 
     { 
       stop = -1; 
     } 
     else 
     { 
       stop = 1; 
     } 
    } 
    while (stop >= 0); 

    System.out.println(" M  T  W  H  F"); 
    for (row = 0; row < week.length; row++) 
    { 
     for (column = 0; column < week[row].length; column++) 
     { 
       System.out.printf("$%1.2f ", week[row][column]); 
     } 
    System.out.println(); 
    } 
} 
public static int rowSearch(char[] names, char idInput) 
{ 
     int row = 0; 
     for (int i = 0; i < names.length; i++) 
     { 
       if (idInput == names[i]) 
        row = i; 
     } 
     return row; 
} 
public static int columnSearch(char[] days, char columnInput) 
{ 
     int column = 0; 
     for (int i = 0; i < days.length; i++) 
     { 
       if (columnInput == days[i]) 
        column = i; 
     } 
     return column; 
} 
} 
+1

написать один или несколько методы, которые запрашивают у пользователя для указанной информации и проверки, но не вернется, пока она не будет действительной или пользователь не войдет в условие выхода ... – MadProgrammer

ответ

0

Начните с написания одного или методов, которые могут подсказать пользователю для некоторых входных сигналов, и может проверить ответ сами. Эти методы должны продолжаться до тех пор, пока не будет задан действительный ответ (или введен код выхода).

Например ...

public String ask(String prompt, char... validResponses) { 
    String response = null; 
    String testResponses = String.valueOf(validResponses).toLowerCase(); 
    Scanner input = new Scanner(System.in); 
    do { 
     System.out.println(prompt); 
     response = input.nextLine(); 
    } while (!testResponses.contains(response.toLowerCase())); 
    return response; 
} 

Тогда вы можете просто вызвать метод с информацией, необходимой ...

String response = ask("Enter the salesman ID as A, B, C or D.", 'A', 'B', 'C', 'D'); 

Вы бы тогда просто использовать ответ, как обычно. ..

В этом примере используется один метод, который принимает приглашение и список допустимых символов. Вы можете так же легко написать два отдельных методы, которые обрабатывают отдельные запросы ...

nameInput = askForSalesMan(); 
dayInput = askForDay(); 

Но что сводится к тому, что вы чувствуете, что вы можете лучше всего обращаться ...

+0

Спасибо за ответ! Тем не менее, мой профессор специально хочет, чтобы у нас была эта петля в программе. – Lightningzr

+0

Ну, вам нужно перевести концепцию на главный метод, а затем – MadProgrammer