询问连续输入整数挑出其中最小值和最大值还能怎么挑出来?

MikeDDT009 2017-03-16 10:28:28
题目是这样:输入一批整数,输出其中的最大值和最小值,输入数字0结束循环。
下面是我的代码,应该是能挑出来,但是看着感觉很麻烦,还有就是里面提到的先前计算的条件貌似也行,但是在DEBUG里面发现当我输入0结束循环的时候,minnum也跟着变化了,break应该就直接跳出循环不该进行到要要赋值的地方,却不知道哪里出了问题。最后只能深究如果要挑出最大和最小至少要输入两个数才有意义而改成现在的这样
		//开启扫描仪
Scanner input = new Scanner(System.in);
//定义变量,分别存放最大数,最小数
int maxnum = 0,minnum = 0;
//定义变量存放输入数
int num;
//定制一个计数器
int count = 1;
//制作一个死循环,只能num是0才能跳出
do{
System.out.print("请输入一个正整数(输入0结束)");
num = input.nextInt();
if(num == 0){
break;
}
//保持maxnum最大
if(maxnum < num){
maxnum = num;
}
//保证给minnum一个小于maxnum的值
else{
//当第三次循环的时候,如果minnum > num的时候交换值,并且进入下一次循环,直到输入0结束为止。
if(count >= 3 ){
if(minnum > num){
minnum = num ;
continue;
}
}
//第二次循环为minnum赋值
minnum = num;
}

/*先前的方法,else后面到count++这段都是下面这段
if(maxnum > num){
minnum = num;
}
*/
count ++;
}while(true);

System.out.println("最大数字是"+maxnum+"最小数字是"+minnum);
//关闭扫描仪
input.close();
...全文
273 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
MikeDDT009 2017-03-18
  • 打赏
  • 举报
回复
引用 4 楼 zs808 的回复:
上面的解答有点问题(输入的终止条件0也会参与最大值与最小值的计算)更正一下:
package org.imzhs.learn.test;

import java.util.Scanner;

public class App {

	public static void main(String[] args) {
		// 开启扫描仪
		Scanner input = new Scanner(System.in);
		// 定义变量,分别存放最大数,最小数
		int maxnum = Integer.MIN_VALUE, minnum = Integer.MAX_VALUE;
		// 制作一个死循环,只能num是0才能跳出
		do {
			System.out.print("请输入一个正整数(输入0结束)");
			// 定义变量存放输入数
			int num = input.nextInt();
			//输入0结束
			if(num == 0){ 
				break;
			}
			// 保持maxnum最大
			if (maxnum < num) {
				maxnum = num;
			}
			// 保持minnum最小
			if (minnum > num) {
				minnum = num;
			}
		} while (true);

		System.out.println("最大数字是" + maxnum + "最小数字是" + minnum);
		// 关闭扫描仪
		input.close();
	}
}
目前你写的表示理解无能,毕竟才算是学了循环结构,所以估计你涉及应该是后面点的内容了
nikyotensai 2017-03-17
  • 打赏
  • 举报
回复
引用 1 楼 MikeDDT009 的回复:
还有一个问题,看书看到一个str.replace(char oldChar, char newChar)字符串替换里面看到的例子, str.replace("a","b")我看前面语法括号里面应该是字符型类型,为什么例子里面是字符串?
书上错了呗。但是java的replace既支持char也支持string,所有这么写也没问题。 字符应该是这个replace('a','b'),字符串是replace("abc","def").” replace(“a“,”b“)用的就是replace(string oldString,string newString)
zs808 2017-03-17
  • 打赏
  • 举报
回复
上面的解答有点问题(输入的终止条件0也会参与最大值与最小值的计算)更正一下:
package org.imzhs.learn.test;

import java.util.Scanner;

public class App {

	public static void main(String[] args) {
		// 开启扫描仪
		Scanner input = new Scanner(System.in);
		// 定义变量,分别存放最大数,最小数
		int maxnum = Integer.MIN_VALUE, minnum = Integer.MAX_VALUE;
		// 制作一个死循环,只能num是0才能跳出
		do {
			System.out.print("请输入一个正整数(输入0结束)");
			// 定义变量存放输入数
			int num = input.nextInt();
			//输入0结束
			if(num == 0){ 
				break;
			}
			// 保持maxnum最大
			if (maxnum < num) {
				maxnum = num;
			}
			// 保持minnum最小
			if (minnum > num) {
				minnum = num;
			}
		} while (true);

		System.out.println("最大数字是" + maxnum + "最小数字是" + minnum);
		// 关闭扫描仪
		input.close();
	}
}
zs808 2017-03-17
  • 打赏
  • 举报
回复
以下是给你修正后的代码,你可以借鉴一下,看看问题出在哪:
		// 开启扫描仪
		Scanner input = new Scanner(System.in);
		// 定义变量,分别存放最大数,最小数
		int maxnum = Integer.MIN_VALUE, minnum = Integer.MAX_VALUE, num = -1;
		// 制作一个死循环,只能num是0才能跳出
		do {
			System.out.print("请输入一个正整数(输入0结束)");
			// 定义变量存放输入数
			num = input.nextInt();
			// 保持maxnum最大
			if (maxnum < num) {
				maxnum = num;
			}
			// 保持minnum最小
			if (minnum > num) {
				minnum = num;
			}
		} while (num != 0);

		System.out.println("最大数字是" + maxnum + "最小数字是" + minnum);
		// 关闭扫描仪
		input.close();
galiniur0u 2017-03-17
  • 打赏
  • 举报
回复
问题1,应该把min=Integer.MAX_VALUE,否则在判断min>num的时候是不会成功的,除非你输入一个负数。跟你最后输入的0没有任何关系。 问题2,replace有多种实现方式,包括字符以及字符串,例子只是例子,举出一个使用方法而已。
MikeDDT009 2017-03-16
  • 打赏
  • 举报
回复
还有一个问题,看书看到一个str.replace(char oldChar, char newChar)字符串替换里面看到的例子, str.replace("a","b")我看前面语法括号里面应该是字符型类型,为什么例子里面是字符串?

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧