public class MinMax2
{
public static void main(String[] args)
throws java.io.IOException
{
int a;
int max,min;
a = System.in.read();
int[] nums = new int[a];
for(int i = 0;i < nums.length;i++)
{
nums[i] = System.in.read();
}
max = min = nums[0];
for(int i = 1;i < nums.length;i++)
{
if(nums[i] < min)
min = nums[i];
if(nums[i] > max)
max = nums[i];
}
System.out.println("The max of your input is:" + max);
System.out.println("The min of your input is:" + min);
}
}
我想做一小段程序,功能是打印数组中的最大与最小元素的值。
要求:
1、数组的长度从键盘输入;
2、数组中元素的值从键盘输入;
以上是我写的程序,编译时没有问题,我想问的是当程序执行到
for(int i = 0;i < nums.length;i++)
{
nums[i] = System.in.read();
}
时我输入5个数字后,我感觉程序就应该自动给出结果。可是我的程序一点反应没有,继续输入数据仍然没有反应。
请问给位这个程序的错误在哪,怎么解决??
{
public static void main(String[] args)
throws java.io.IOException
{
int a;
int max,min;
a = System.in.read();
int[] nums = new int[a];
for(int i = 0;i < nums.length;i++)
{
nums[i] = System.in.read();
}
max = min = nums[0];
for(int i = 1;i < nums.length;i++)
{
if(nums[i] < min)
min = nums[i];
if(nums[i] > max)
max = nums[i];
}
System.out.println("The max of your input is:" + max);
System.out.println("The min of your input is:" + min);
}
}
我想做一小段程序,功能是打印数组中的最大与最小元素的值。
要求:
1、数组的长度从键盘输入;
2、数组中元素的值从键盘输入;
以上是我写的程序,编译时没有问题,我想问的是当程序执行到
for(int i = 0;i < nums.length;i++)
{
nums[i] = System.in.read();
}
时我输入5个数字后,我感觉程序就应该自动给出结果。可是我的程序一点反应没有,继续输入数据仍然没有反应。
请问给位这个程序的错误在哪,怎么解决??
输完后,多按几下ENTER能输出最后的那两句话,但值有问题,不是最值,测试是发现输入的值输出时有问题,不是输入的那个值,自己试试吧,
在DOS下应该是可以的,但是在eclipse就不行。
public static void main(String[] args) throws java.io.IOException {
int a;
int max, min;
System.out.print("请输入数组个数:");
a = System.in.read();
int[] nums = new int[Integer.parseInt((char)a+"")];
for (int i = 0; i < nums.length; i++) {
System.out.print("共需要输入"+nums.length+"个数字,请输入第"+(i+1)+"个数字:");
String inputStr = (char)System.in.read()+"";
try{
nums[i] = Integer.parseInt(inputStr);
}catch(NumberFormatException e){
boolean needReInput = true;
do{
try{
if(inputStr.matches("(\\s*)|(\r)|(\n)|(\r\n)")){
inputStr = (char)System.in.read()+"";
}else if(!inputStr.matches("\\d+")){
System.out.print("您输入的不是数字,请重新输入:");
inputStr = (char)System.in.read()+"";
}
nums[i] = Integer.parseInt(inputStr);
needReInput = false;
}catch(NumberFormatException e1){
}
}while(needReInput);
}
}
max = min = nums[0];
for (int i = 1; i < nums.length; i++) {
if (nums[i] < min)
min = nums[i];
if (nums[i] > max)
max = nums[i];
}
System.out.println("The max of your input is:" + max);
System.out.println("The min of your input is:" + min);
}
}
这句返回的是输入的一个字符的ASCII码,如果你第一次输入的是1,这是后a并不是我们想象中的1,而是1的ascii码,即49,那么,你就必须输入49个字符(包含任何字符),这样才能有输出,而且比较出来的也并不是你输入的那些数字,而是那些你输入的字符的ascii码的比较。
不过还是感谢你让我也清楚地认识了System.in.read()这个方法。
import java.io.InputStreamReader;/**
* Created by IntelliJ IDEA.
* User: Administrator
* Date: 2009-4-7
* Time: 22:25:26
* To change this template use File | Settings | File Templates.
*/
public class MinMax2 { public static void main(String[] args) throws java.io.IOException {
int a;
int max, min; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("取得元素中最大与最小值程序");
System.out.print("请输入需要比较的元素个数:");
a=getInputNum(br);
System.out.println();
int[] nums = new int[a];
for (int i = 0; i < nums.length; i++) {
System.out.print("请输入第"+(i+1)+"个数字:");
nums[i]=getInputNum(br);
System.out.println();
}
max = min = nums[0];
for (int i = 1; i < nums.length; i++) {
if (nums[i] < min)
min = nums[i];
if (nums[i] > max)
max = nums[i];
}
System.out.println("The max of your input is:" + max);
System.out.println("The min of your input is:" + min);
} private static int getInputNum(BufferedReader br) {
int ret;
while (true) {
try {
ret=Integer.parseInt(br.readLine());
break;
} catch (Exception e) {
System.out.print("输入字符不是数字,请重新输入:");
}
}
return ret;
}}
public static void main(String[] args) throws java.io.IOException {
int a;
int max, min;
System.out.print("请输入数组个数:");
String inputStr = null,strA = "";
inputStr = (char)System.in.read()+"";
while(inputStr.matches("\\d")){
strA += inputStr;
inputStr = (char)System.in.read()+"";
}
a = Integer.parseInt(strA);
int[] nums = new int[a];
boolean isNextNum = true;
for (int i = 0,j=0; i < a && j<a ; i++) {
if(isNextNum){
System.out.print("共需要输入"+a+"个数字,请输入第"+(i+1)+"个数字:");
}
strA = "";
while(inputStr.matches("\\d")||(strA.equals("") && inputStr.matches("(\\s*)|(\r)|(\n)|(\r\n)"))){
if(strA.equals("") && inputStr.matches("(\\s*)|(\r)|(\n)|(\r\n)")){
inputStr = (char)System.in.read()+"";
continue;
}
strA += inputStr;
inputStr = (char)System.in.read()+"";
}
if(strA.equals("") && !inputStr.matches("(\\s*)|(\r)|(\n)|(\r\n)")){
if(i>=j){
i--;
}
while(!inputStr.matches("\\d")){
if(!inputStr.matches("(\\s*)|(\r)|(\n)|(\r\n)")){
System.out.print("您输入的不是数字,请重新输入:");
}
inputStr = (char)System.in.read()+"";
}
isNextNum = false;
}
else{
nums[i] = Integer.parseInt(strA);
j++;
isNextNum = true;
}
}
max = min = nums[0];
for (int i = 1; i < nums.length; i++) {
if (nums[i] < min)
min = nums[i];
if (nums[i] > max)
max = nums[i];
}
System.out.println("The max of your input is:" + max);
System.out.println("The min of your input is:" + min);
}
}执行结果:
请输入数组个数:5
共需要输入5个数字,请输入第1个数字:a
您输入的不是数字,请重新输入:1234
共需要输入5个数字,请输入第2个数字:1234534
共需要输入5个数字,请输入第3个数字:a
您输入的不是数字,请重新输入:b
您输入的不是数字,请重新输入:c
您输入的不是数字,请重新输入:11
共需要输入5个数字,请输入第4个数字:999999
共需要输入5个数字,请输入第5个数字:1000000
The max of your input is:1234534
The min of your input is:11
1、将代码进行良好的格式化,以方便阅读。
2、在发帖文本框的上方单击“#”按钮,选择 Java
3、将代码粘贴到【code=Java】和【/code】之间。发出来的帖子就会是下面的效果:public class Hello { // 程序入口
public static void main(String[] args) {
System.out.println("Hello!");
}
}
楼主解决的方法:
把System.in.read();
替换
Integer.parseInt(new BufferedReader(new InputStreamReader(System.in)).readLine());
就可以了。