java - 数组和打印语句/ java
问题描述
我需要制作一个程序,要求用户输入车主今天使用了多少辆卡车,卡车是“大”还是“小”,并基本上打印卡车的容量。如果用户在使用 else 语句后没有输入 small 或 large,我会遇到问题。教授希望我们要求用户再试一次。此外,我对如何打印结果感到困惑,尤其是当用户输入超过 2 辆卡车时。
这是我的代码:
import java.util.Arrays;
import java.util.Scanner;
public class TomTrucking {
/*
* Complete here if you are using class variables
*/
public static void main(String[]args){
Scanner input = new Scanner(System.in);
System.out.println("How many trucks are operating today (Number of trucks must be 2 or greater)? :");
int t1 = input.nextInt();
if(t1 < 2) {
System.out.println("You entered a value less than 2 for number of trucks.");
System.out.println("Terminating program. ");
System.exit(0);
}else {
double crates = 0;
double crates1 = 0;
String truck;
int i=0;
double array[] = new double[t1];
double array1[] = new double[t1];
for( i = 0; i < array.length; i++ ) {
System.out.println("What is the size of truck " + (i+1) + "(large trucks max crates = 100, small trucks max crates = 10)? ");
truck = input.next();
while(!true) {
if(truck.equals("large")) {
System.out.println("What is the actual number of crates that truck " + (i+1) + " is hauling today (Truck 1 max crates is 100)? ");
crates = input.nextDouble();
boolean ok = true;
array[i] = (crates/100);
}else if(truck.equals("small")){
System.out.println("What is the actual number of crates that truck " + (i+1) + " is hauling today (Truck 2 max crates is 10)? ");
crates1 = input.nextDouble();
boolean ok = true;
array1[i] = (crates1/10)*100;
}else {
System.out.println("Enter either large or small: ");
boolean ok = false;
}
}
System.out.println("**Entry for all trucks completed**");
System.out.println("Truck " + (i-1) + " max: 100 actual: " + crates + " capacity at: " + (array[i-2]) + "%");
System.out.println("Truck " + (i) + " max: 10 actual: " + crates1 + " capacity at: " + (array1[i-2]) + "%");
}
}
}
}
解决方案
首先,while
循环的条件是
while(!true) {
这意味着循环内的代码永远不会被处理。你可能是说
while(!ok) {
这意味着您必须ok
在循环之外声明。
第二,不要使用System.exit()
. 这被认为是不好的做法。使用布尔标志来控制流量。
第三,我建议您使用适当的缩进重新格式化您的代码并使用有意义的变量名称(例如 forarray
和array1
)。这将帮助您发现错误并帮助我们了解代码。此外,将代码分解为逻辑单元并将它们放入单独的方法中。例如,一种方法处理用户输入,另一种方法对其进行验证,另一种方法用于计算,最后一种方法用于显示结果。
推荐阅读
- javascript - 将数组和其他参数传递给函数。如何?
- ios - React Native White screen with any crash or error iOS
- google-analytics - Google Analytics - 带有反斜杠的 Google Organic 流量
- c++ - 编译静态库时收集所有头文件
- sharepoint - 是否有如何使用 SPFx 编码/创建工作流的选项?
- c# - 控制台输出流的自定义文本编写器在外部类中不起作用
- amazon-web-services - 适用于频繁更新的关键小文件的 AWS EFS
- cordova-plugins - 如何在 Scanbot 中设置页面的最大文件大小
- android - 更新 Chrome 后无法在 Chrome 设备工具中执行 SQL 查询
- mysql - 如何为mysql中的记录组提供相同的序列号