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);
}
}
我动态的输入时,发现 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);
}
}
你把字符转一下不就行了,Integer.parseint
(String)???
怎么转,好象也不行
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); }
}
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);
}
}
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);
}
}
建议你先把它们读入一个buf中,而后再进行转换!
你改的第一个题目,编译时没有问题, 但输入结果后就有问题了,读进去的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);
}}
用BufferedReader多简单啊
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
不能得到正确的数值,比如说你输入一个数字78,你将得到两个int 7和8,建议用readLine();
{
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;
}
String num=null;
int iii=0;
while ((num=br.readLine())!=null) {
iii=Integer.parseInt(num);
}//////
这得到的str就是输入数字的字符串形式, iii就是输入的数字.
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;
}
看不懂??
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();
.........