怎么从命令提示符状态取得输入字符?? 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); } }}各位还有什么建议,请多指教 对象equals的基本语法问题 Java连接数据库无法执行 java 适配器是接口还是类 在线程里面的值怎么调用界面类的jTextArea里面显示? executeBatch问题 一个关于Jbutton颜色的问题 在线等 jar文件 用JAVA写解压代码怎么写呀,我想了好半天动不了手呀 如何卸载j2sdk? 如何得到前几天的日期 再谈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);
}
}
}各位还有什么建议,请多指教