Java 循环和数组格式
我刚写完这个我必须为课堂写的程序。程序应该从用户那里获取“ID”和“Day”的输入,我的老师要求我们在这两个部分中设置一个循环,以防用户没有输入正确的ID/天。我已经将程序编写到可以接收输入的位置,但它无法区分输入是否有效,并将继续执行程序的其余部分。在数组的末尾,它应该打印数组,我已经完成了。我只想把ID(A,B,C,D)放在数组旁边。我希望最终结果的ID在数组左侧向下列出,与4x5表对齐。如果你们有任何关于如何做到这一点的建议/提示,我们将不胜感激Java 循环和数组格式,java,arrays,loops,Java,Arrays,Loops,我刚写完这个我必须为课堂写的程序。程序应该从用户那里获取“ID”和“Day”的输入,我的老师要求我们在这两个部分中设置一个循环,以防用户没有输入正确的ID/天。我已经将程序编写到可以接收输入的位置,但它无法区分输入是否有效,并将继续执行程序的其余部分。在数组的末尾,它应该打印数组,我已经完成了。我只想把ID(A,B,C,D)放在数组旁边。我希望最终结果的ID在数组左侧向下列出,与4x5表对齐。如果你们有任何关于如何做到这一点的建议/提示,我们将不胜感激 import java.util.Scan
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();
但这取决于您认为您能最好地处理什么…编写一个或多个方法,要求用户提供指定信息并进行验证,但在有效或用户进入退出条件之前不会返回…感谢您的回答!然而,我的教授特别希望我们在程序中有这个循环。那么,你需要把这个概念转化为你的主要方法