怎么从命令提示符状态取得输入字符?? int data=System.in.read() 报错么??? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 BufferedReader stdin = new BufferedReader( new InputStreamReader(System.in)); System.out.print("Enter a line:"); System.out.println(stdin.readLine()); import java.util.*;import java.io.*;public class jiecheng{ static int jjiecheng(int i){ if(i==0) return 1; else{ return i*jjiecheng(i-1); } } public static void main(String[] args) throws IOException { int c=0; int temp=0; c=System.in.read(); System.out.println("c="+c); if(c<0){ System.out.println("^_^负数怎么会有阶乘^_^"); return; } else if(c==0){ System.out.println("0的阶乘总是1 ^_^"); } else { temp=jjiecheng(c); System.out.println(temp); } }}然后,无论我输入什么数值(10以内),结果都是都是0,郁闷。我想原因可能是read()读入的是一个字符数据,不是整型的。所以造成这种结果,那么用什么方法解决呢?类型转换吗?或者还有其它的方法?谢谢了。 因为System.in.read()只接受一个字符,而InputStream.read()返回的整型是一个ASCII值。所以要减去48。(1的ASCII值为49)我的修改如下:import java.util.*;import java.io.*;public class exec{ public static int jjiecheng(int i){ if(i==0) return 1; else{ return i*jjiecheng(i-1); } } public static void main(String [] args) throws IOException { char c; int s; int temp=0; c=(char)System.in.read(); s=c-48;// ASCII码转化为整数 System.out.println("the Keyboard code:"+ c); System.out.println("the Decimal is:"+ s); if(s<0){ System.out.println("^_^负数怎么会有阶乘^_^"); return; } else if(s==0){ System.out.println("0的阶乘总是1 ^_^"); } else { temp= jjiecheng(s); System.out.println(temp); } }}各位还有什么建议,请多指教 N多文本文件,有什么好的办法把他们合并为一个文件吗? 用ultraedit写.java的时候,如何不让string自动变成String? 想请达人帮忙看我这个动态树构造到底问题出在哪了? 在JAVA程序中,如何调用 dcrf.jar 数据库查询中的问题 如何搜索接口的原型? 那里有打包好的Ant的文档 怎样在文本文件中追加内容? java中怎样实现利用socket编写收邮件的代码 关于用Java写Oracle的存储过程时出现的中文字符集的问题? 再谈Java(JBuilder)中的光标问题 如何使用JAR工具创建.jar文件呢??
new BufferedReader(
new InputStreamReader(System.in));
System.out.print("Enter a line:");
System.out.println(stdin.readLine());
import java.io.*;
public class jiecheng
{
static int jjiecheng(int i){
if(i==0)
return 1;
else{
return i*jjiecheng(i-1);
}
}
public static void main(String[] args) throws IOException
{
int c=0;
int temp=0;
c=System.in.read();
System.out.println("c="+c);
if(c<0){
System.out.println("^_^负数怎么会有阶乘^_^");
return;
}
else if(c==0){
System.out.println("0的阶乘总是1 ^_^");
}
else
{
temp=jjiecheng(c);
System.out.println(temp);
}
}
}
然后,无论我输入什么数值(10以内),结果都是都是0,郁闷。我想原因可能是read()读入的是一个字符数据,不是整型的。所以造成这种结果,那么用什么方法解决呢?类型转换吗?或者还有其它的方法?谢谢了。
我的修改如下:import java.util.*;
import java.io.*;
public class exec
{
public static int jjiecheng(int i){
if(i==0)
return 1;
else{
return i*jjiecheng(i-1);
}
}
public static void main(String [] args) throws IOException
{
char c;
int s;
int temp=0;
c=(char)System.in.read();
s=c-48;// ASCII码转化为整数
System.out.println("the Keyboard code:"+ c);
System.out.println("the Decimal is:"+ s);
if(s<0){
System.out.println("^_^负数怎么会有阶乘^_^");
return;
}
else if(s==0){
System.out.println("0的阶乘总是1 ^_^");
}
else
{
temp= jjiecheng(s);
System.out.println(temp);
}
}
}各位还有什么建议,请多指教