回 帖 发 新 帖 刷新版面

主题:谁来帮帮我啊:一个输入的问题

这个程序想完成的功能:向用户提问“现在正在下雨吗?”若输入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;
      
    }





    }
}

回复列表 (共7个回复)

沙发

有些代码是不需要的,注释了


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;

        }

    }
}

板凳

哥们给你改好了:看看吧!!
[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 楼

非常感谢1楼和2楼的哥们
我都运行了,都很成功啊![em1][em1][em1]

2楼的最好解释一下charAt,我看JDK文档不太明白,谢了!
为什么charAt就可以用==?用‘’,而我的用equals用‘’就不行呢

4 楼

int a = 'a';是可以的,所以 可以 用 ==
而 String 中的 equals(Object o)方法 对于参数 char 不适用

5 楼

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 楼

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 楼

怎么都不用Scanner的啊......

我来回复

您尚未登录,请登录后再回复。点此登录或注册