主题:谁来帮帮我啊:一个输入的问题
cyh82827
[专家分:0] 发布于 2007-10-24 08:01:00
这个程序想完成的功能:向用户提问“现在正在下雨吗?”若输入y,显示“现在正在下雨”;若输入n,显示“现在没有下雨”,否则继续提问“现在正在下雨吗?”
我运行了,很明显的是到了if语句的时候就不执行,不知道是不是语句有问题?
请各位大侠帮帮忙啊!多谢了!
package sum;
import java.io.*;
public class Sum {
public Sum() {
}
public static void main(String[] args) throws IOException {
Sum sum = new Sum();
while(true)
{
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
System.out.println("现在正在下雨么?");
String s = buf.readLine();
if (buf.readLine().equals('y')) {
System.out.println("现在正在下雨");
flag = false;
break;
} else
if (buf.readLine().equals('n')) {
System.out.println("现在没有下雨");
flag = false;
break;
}
else
continue;
}
}
}
最后更新于:2007-10-24 08:03:00
回复列表 (共7个回复)
沙发
sjhlovejava [专家分:1690] 发布于 2007-10-24 10:48:00
有些代码是不需要的,注释了
package sum;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Sum {
public Sum() {
}
public static void main(String[] args) throws IOException {
//Sum sum = new Sum();
while (true) {
BufferedReader buf = new BufferedReader(new InputStreamReader(
System.in));
System.out.println("现在正在下雨么?");
String s = buf.readLine();
//if (buf.readLine().equals('y')) {
if (s.equals("y")) {
System.out.println("现在正在下雨");
//flag = false;
break;
//} else if (buf.readLine().equals('n')) {
} else if (s.equals("n")) {
System.out.println("现在没有下雨");
//flag = false;
break;
} //else
//continue;
}
}
}
板凳
haoboy0817 [专家分:880] 发布于 2007-10-24 12:33:00
哥们给你改好了:看看吧!!
[size=3]注意编译运行:
javac -d . Sum.java
运行:
java sum.Sum[/size]
package sum;
import java.io.*;
public class Sum
{
//public Sum() {}
public static void main(String[] args) throws IOException
{
Sum sum = new Sum();
boolean flag;
while(true)
{
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
System.out.println("现在正在下雨么?");
String s = buf.readLine();
if (s.charAt(0)=='y')
{
System.out.println("现在正在下雨");
flag = false;
break;
}
else if (s.charAt(0)=='n')
{
System.out.println("现在没有下雨");
flag = false;
break;
}
else
continue;
}
}
}
3 楼
cyh82827 [专家分:0] 发布于 2007-10-24 13:53:00
非常感谢1楼和2楼的哥们
我都运行了,都很成功啊![em1][em1][em1]
2楼的最好解释一下charAt,我看JDK文档不太明白,谢了!
为什么charAt就可以用==?用‘’,而我的用equals用‘’就不行呢
4 楼
sjhlovejava [专家分:1690] 发布于 2007-10-24 15:52:00
int a = 'a';是可以的,所以 可以 用 ==
而 String 中的 equals(Object o)方法 对于参数 char 不适用
5 楼
sjhlovejava [专家分:1690] 发布于 2007-10-24 15:54:00
public char charAt(int index)返回指定索引处的 char 值。索引范围为从 0 到 length() - 1。序列的第一个 char 值在索引 0 处,第二个在索引 1 处,依此类推,这类似于数组索引。
如果索引指定的 char 值是代理项,则返回代理项值。
指定者:
接口 CharSequence 中的 charAt
参数:
index - char 值的索引。
返回:
此字符串指定索引处的 char 值。第一个 char 值在索引 0 处。
char 值表示 Basic Multilingual Plane (BMP) 代码点,其中包括代理项代码点,或 UTF-16 编码的代码单元。int 值表示所有 Unicode 代码点,包括增补代码点。int 的 21 个低位(最低有效位)用于表示 Unicode 代码点,并且 11 个高位(最高有效位)必须为零。除非另有指定,否则与增补字符和代理项 char 值有关的行为如下:
只接受一个 char 值的方法无法支持增补字符。它们将代理项字符范围内的 char 值视为未定义字符。例如,Character.isLetter('\uD840') 返回 false,即使是特定值,如果在字符串的后面跟着任何低代理项值,那么它将表示一个字母。
接受一个 int 值的方法支持所有 Unicode 字符,其中包括增补字符。例如,Character.isLetter(0x2F81A) 返回 true,因为代码点值表示一个字母(一个 CJK 象形文字)。
6 楼
happyboy2007 [专家分:3900] 发布于 2007-10-24 17:43:00
import java.io.*;
class Demo
{
public static void main(String[]args) throws Exception
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
while(true)
{
String str = br.readLine();
if(str.equals("y"))
{
System.out.println ("现在在下雨。");
break;
}
else if(str.equals("n"))
{
System.out.println ("现在没有下雨。");
break;
}
}
}
}
7 楼
daifei4321 [专家分:2590] 发布于 2007-10-24 22:42:00
怎么都不用Scanner的啊......
我来回复