问:该程序需要从数组中查找并打印一个最小值。我在哪里犯错了?它输出0而不是实际值:
公共 静态 无效 主(字符串[] ARGS ) {
扫描仪输入=新扫描仪(系统。在); 系统。出来。println (“输入数字” ); int n =输入。nextInt (); double a [] =新的double [ n ];double min = a [ 0 ]; 为(
int i = 0 ; 我< n ; 我++){
系统。出来。println (“输入数字” ); a [ i ] =输入。nextDouble (); 如果(a [ i ] < min )min = a [ i ];}系统。出来。println (“最小值是” + min ); } }
答:这似乎可以解决问题:
公共 静态 无效 主(字符串[] ARGS ){
扫描仪SC =新扫描仪(系统。在); 系统。出来。printf (“输入您的第一个数字:” ); 字符串响应= sc 。nextLine (); int currentLowest =整数。parseInt (response ); 而(!响应。等于(
的“x” )) {
如果(整数。parseInt函数(响应)< currentLowest ){ currentLowest =整数。parseInt (response ); }系统。出来。printf (“输入另一个数字或'x'退出:” ); 响应= sc 。nextLine (); }系统。出来。printf (“输入的最低数字是%s” ,currentLowest
);
}
在这里,我们设置Scanner,输出提示并读入一个String,将其分配给response。然后将其解析为整数并存储在currentLowest变量中-输入的第一个数字必须是当前的最低数字。
然后,我们进入一个while循环,该循环正在寻找转义字符“ x”以停止循环。将currentLowest再次与现有的输入相比(没有尚未改变了这里)和代码移到提示另一个号码,读取作为一个String进入response。循环复位,测试这是否response是转义字符;否则,返回0 。如果是的话就停下来。如果不是,则将输入的数字与先前的最低数字进行比较,并将两个数值中的较低者存储在中currentLowest。重复此过程,直到用户输入“ x”字符为止。
输入“ x”后,将currentLowest输出该值。