Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 循环和数组格式_Java_Arrays_Loops - Fatal编程技术网

Java 循环和数组格式

Java 循环和数组格式,java,arrays,loops,Java,Arrays,Loops,我刚写完这个我必须为课堂写的程序。程序应该从用户那里获取“ID”和“Day”的输入,我的老师要求我们在这两个部分中设置一个循环,以防用户没有输入正确的ID/天。我已经将程序编写到可以接收输入的位置,但它无法区分输入是否有效,并将继续执行程序的其余部分。在数组的末尾,它应该打印数组,我已经完成了。我只想把ID(A,B,C,D)放在数组旁边。我希望最终结果的ID在数组左侧向下列出,与4x5表对齐。如果你们有任何关于如何做到这一点的建议/提示,我们将不胜感激 import java.util.Scan

我刚写完这个我必须为课堂写的程序。程序应该从用户那里获取“ID”和“Day”的输入,我的老师要求我们在这两个部分中设置一个循环,以防用户没有输入正确的ID/天。我已经将程序编写到可以接收输入的位置,但它无法区分输入是否有效,并将继续执行程序的其余部分。在数组的末尾,它应该打印数组,我已经完成了。我只想把ID(A,B,C,D)放在数组旁边。我希望最终结果的ID在数组左侧向下列出,与4x5表对齐。如果你们有任何关于如何做到这一点的建议/提示,我们将不胜感激

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;
 }
}
import java.util.Scanner;
公务舱推销员
{
公共静态void main(字符串[]args)
{
扫描仪输入=新扫描仪(System.in);
char[]name={'A','B','C','D'};
字符[]天={M',T',W',H',F'};
双倍[][]周=新双倍[4][5];
int stop=0;
字符名称输入;
字符输入;
双重成本;
int行;
int列;
做
{
System.out.println(“将销售人员ID输入为A、B、C或D”);
字符串nameString=input.nextLine();
nameInput=nameString.charAt(0);
行=行搜索(名称、名称输入);
System.out.println(“将一周中的某一天输入为M、T、W、H或F”);
String dayString=input.nextLine();
dayInput=dayString.charAt(0);
column=columnSearch(天,天输入);
System.out.println(“输入销售金额”);
cost=input.nextDouble();
周[行][列]=成本;
System.out.println(“是否有更多数据?输入Y表示更多数据或输入N表示停止”);
input.nextLine();
字符串dataString=input.nextLine();
char dataInput=dataString.charAt(0);
如果(数据输入='N')
{
停止=-1;
}
其他的
{
停止=1;
}
}
而(停止>=0);
System.out.println(“M T W H F”);
对于(行=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();

但这取决于您认为您能最好地处理什么…

编写一个或多个方法,要求用户提供指定信息并进行验证,但在有效或用户进入退出条件之前不会返回…感谢您的回答!然而,我的教授特别希望我们在程序中有这个循环。那么,你需要把这个概念转化为你的主要方法