1:从10个数中找出最大值。
我动态的输入时,发现 read()方法行不通,它只能接受字符,是不是?
问老师(一个老头子),他也不知道。郁闷,作为初学者就受到如此打击,真是.......
请指教。
import java.io.*;
class Max
{
public static void main(String args[]) throws IOException 
{
int max,i;
int a[]=new int[10];
System.out.println("请输入10个数字,找出最大数:");
for(i=0;i<10;i++)
   a[i]=(int)System.in.read();
  for(i=0;i<10;i++)
     System.out.print(" " + a[i]);//想监测输入是否正确,但不行。
    System.in.skip(2); //屏蔽回车符
   
max=a[0];
for(i=1;i<10;i++) 
if(a[i]>max) 
    max=a[i];
System.out.println("最大值:" + max);
    
}

}2:也是一个输入的问题。计算常数e的值,e=1+1/1!+1/2!+1/3!+1/4!+....+1/n!
//就是读不进n值
import java.io.*;
class EofValue
{
public static void main(String args[]) throws IOException
{
double  s,t;
s=t=1.0;
int i,n;
System.out.println("Please the value of n:");
         n=(int)System.in.read();
System.in.skip(2);
for(i=1;i<=n;i++)
{
t*=i;
s=s+1.0/t;
}

System.out.println(" e of value is:" + s);
}
}

解决方案 »

  1.   

    发现 read()方法行不通,它只能接受字符,是不是?
    你把字符转一下不就行了,Integer.parseint
      

  2.   

    用 Integer.parseint这个方法,不行,看那个英文的帮助文档,也没有说怎么用,很郁闷!!
    (String)???
    怎么转,好象也不行
      

  3.   

    我把第一题给你改了一下,看一下应该第二个你也会改的!import java.io.*;
    class Max{
    public static void main(String args[]) throws IOException {
    int max;
    int a[]=new int[10];
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    String s = in.readLine();
    String[] s1 =s.split(" ");
    for(int i=0;i<10;i++){
    a[i]=Integer.parseInt(s1[i]);
    }   for(int i=0;i<10;i++){
         System.out.print(" " + a[i]);
        }//想监测输入是否正确,但不行。
       
    max=a[0];
    for(int i=1;i<10;i++) 
    if(a[i]>max) 
        max=a[i];
    System.out.println("最大值:" + max); }

    }
      

  4.   

    我把第一个问题改了一下,现在可以了!
    import java.io.*;
    public class Max
    {
    public static void main(String args[]) throws IOException 
    {
     int max,i;
     int a[]=new int[10];
                       String str[]=new String[10];
                       byte buf[]=new byte[20];
     System.out.println("请输入10个数字,找出最大数:");
     for(i=0;i<10;i++){
       System.in.read(buf);
                         str[i]=new String(buf);
                         a[i]=Integer.parseInt(str[i].trim());
                       }
         for(i=0;i<10;i++)
         System.out.print(" " + a[i]);
     
              max=a[0];
     for(i=1;i<10;i++) 
     if(a[i]>max) 
        max=a[i];
    System.out.println("\n最大值:" + max);
        
    }

    }
      

  5.   

    同理,把第二个问题改一下也可以了!import java.io.*;
    public class EofValue
    {
    public static void main(String args[]) throws IOException
    {
    double  s,t;
    s=t=1.0;
    int i;
                    byte[] buf=new byte[20];
    System.out.println("Please the value of n:");
            System.in.read(buf);
                    int n=Integer.parseInt(new String(buf).trim());
                    System.out.println("n="+n);

    for(i=1;i<=n;i++)
    {
    t*=i;
    s=s+1.0/t;
    }

    System.out.println(" e of value is:" + s);
    }
    }
      

  6.   

    出错的原因很简单,你用int n=(int)System.in.read()所读取是字符的ASCII码值,而不是实际的整数值,故出现了错误,两个问题都是这个情况!
    建议你先把它们读入一个buf中,而后再进行转换!
      

  7.   

    :  liwenchao() 
     你改的第一个题目,编译时没有问题, 但输入结果后就有问题了,读进去的10个数只能有7个被输出,还有就是最大值并不能输出来.  
    我稍微改了一下,还是不行!!!import java.io.*;
    public class Max
    {
    public static void main(String args[]) throws IOException 
    {
     int max,i;
     int a[]=new int[10];
     String str[]=new String[10];
     byte buf[]=new byte[20];
     System.out.println("请输入10个数字,找出最大数:");
     for(i=0;i<10;i++)
     {
       System.in.read(buf);
       str[i]=new String(buf);
       a[i]=Integer.parseInt(str[i].trim());
     }
     for(i=0;i<10;i++)
        System.out.print(" " + a[i]);
     
     max=a[0];
     for(i=1;i<10;i++) 
     if(a[i]>max) 
        max=a[i];
    System.out.println("\n最大值:" + max);
        
    }}
      

  8.   

    非要read不可啊
    用BufferedReader多简单啊
      

  9.   

    没有问题呀,这是运行结果!
    G:\>javac Max.javaG:\>java Max
    请输入10个数字,找出最大数
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     1 2 3 4 5 6 7 8 9 10
    最大值:10
      

  10.   

    a[i]=(int)System.in.read();
    不能得到正确的数值,比如说你输入一个数字78,你将得到两个int 7和8,建议用readLine();
      

  11.   

    用这个方法。肯定行。public int readInt()
       {
          String token = getNextToken();
          int value;
          try
          {
             value = Integer.parseInt (token);
          }
          catch (Exception exception)
          {
             error ("Error reading int data, MIN_VALUE value returned.");
             value = Integer.MIN_VALUE;
          }
          return value;
       }
      

  12.   

    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    String num=null;
    int iii=0;
    while ((num=br.readLine())!=null) {
        iii=Integer.parseInt(num);
    }//////
    这得到的str就是输入数字的字符串形式, iii就是输入的数字.
      

  13.   

    private static String current_token = null;
       private static StringTokenizer reader;   private static BufferedReader in = new BufferedReader
          (new InputStreamReader(System.in)); private static String getNextToken()
       {
          return getNextToken (true);
       }
    private static String getNextInputToken (boolean skip)
       {
          final String delimiters = " \t\n\r\f";
          String token = null;      try
          {
             if (reader == null)
                reader = new StringTokenizer
                   (in.readLine(), delimiters, true);         while (token == null ||
                    ((delimiters.indexOf (token) >= 0) && skip))
             {
                while (!reader.hasMoreTokens())
                   reader = new StringTokenizer
                      (in.readLine(), delimiters,true);            token = reader.nextToken();
             }
          }
          catch (Exception exception)
          {
             token = null;
          }      return token;
       }
    应该行了吧。用的时候:
    int a;  
    System.out.println("I want something");
    a= readInt();            
       //-----------------------------------------------------------------
       //  Gets the next input token, which may already have been read.
       //-----------------------------------------------------------------
       private static String getNextToken (boolean skip)
       {
          String token;      if (current_token == null)
             token = getNextInputToken (skip);
          else
          {
             token = current_token;
             current_token = null;
          }      return token;
       }
      

  14.   

    lindd(塔洲之行) 你的程序在干什么?
    看不懂??
      

  15.   

    JDK 5.0 中可以这样进行控制台的输入
    import java.util.*;Scanner in = new Scanner(System.in);
    String s = in.nextLine();
    int i = in.nextInt();
    float f = in.nextFloat();
    double d = in.nextDouble();
    .........