A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘晓康 中级黑马   /  2012-4-4 15:37  /  1698 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在使用MyEclipse的时候,要求输入N行字符串。
如:class Number
{
    public static void main(String args[])
{         
            Scanner input = new Scanner(System.in);
            System.out.println("输入字符串的行数");
            int N = input.nextInt();
            String str = "";
            for(int i = 0 ; i < N; i++)
            {
                    str +=input.next();
            }
            System.out.println(str);
            
  
           }
                                    
  }
输入的格式为:
jij dkjdfj jkj,为什么在按回车键的时候,直接打印出来了,
我想是不是空格在输入的时候也是换行哈,如果不是,那应该怎么解释,还有,怎么样输入一行字符串的时候,空格也算是一个字符输入。比如:输入3行,输入格式为:
      djkljddjfj djk dkjf (回车)
     djdjkjfdsjfkdsjlfj&(&dkljf *&^lkds jf  (回车)
     3odndkjh (回车)
  这样才是三行,怎么样解决空格的问题?

5 个回复

倒序浏览
本帖最后由 郑苑东 于 2012-4-4 17:20 编辑

在底层空格应该是被当成了一个结束的分割标记。。。。可以试试用这个方法      BufferedReader  br = new BufferedReader(new InputStream(System.in));
br.readLine();用这个方法来读一行一行。。
回复 使用道具 举报
本帖最后由 刘士 于 2012-4-4 17:22 编辑

String java.util.Scanner.next()

next
public String next()
查找并返回来自此扫描器的下一个完整标记。完整标记的前后是与分隔模式匹配的输入信息。即使以前调用 hasNext() 返回了 true,在等待要扫描的输入时此方法也可能阻塞。

以上是SDK里面的解说
input.next();  空格被当做分隔符。
如果需要输入带空格的字符串 ,那就用nextLine ,对于nextLine来讲,读取的分隔符是 换行符。

如:
public static void main(String args[]) {
                Scanner input = new Scanner(System.in);
                System.out.println("输入字符串的行数");
                int N = input.nextInt();
                String str = "";
                for (int i = 0; i <= N; i++) {
                        str += input.nextLine();
                }
                System.out.println(str);
回复 使用道具 举报
Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配
扫描器还可以使用不同于空白的分隔符。下面是从一个字符串读取若干项的例子:

     String input = "1 fish 2 fish red fish blue fish";
     Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");
     System.out.println(s.nextInt());
     System.out.println(s.nextInt());
     System.out.println(s.next());
     System.out.println(s.next());
     s.close(); 输出为:

     1
     2
     red
     blue
这是从API中摘录的,如果你不希望用空格分隔,
Scanner input = new Scanner(System.in).useDelimiter(("\\s*\r\n\\s*"));
用回车换行作为分隔、
回复 使用道具 举报
怎么感觉像是我以前提问过的一个问题????????????????、
回复 使用道具 举报
刘泰 发表于 2012-4-4 19:25
怎么感觉像是我以前提问过的一个问题????????????????、 ...

好像就是哟。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马