黑马程序员技术交流社区

标题: 出大事了!nextInt和nextLine的疑惑 [打印本页]

作者: 徐小骥    时间: 2012-8-10 20:15
标题: 出大事了!nextInt和nextLine的疑惑
本帖最后由 徐小骥 于 2012-8-10 21:23 编辑

import java.util.Scanner;


public class test1 {
        private static String[] it=null;//声明数组
        private static int[] iit=null;
        
        
        private static void getit(int num,Scanner sc){
                iit=new int[num];//实例化一个int类型数组,与String数组对比
                it=new String[num];//实例化一个String类型数组
                for(int j=0;j<num;j++){
                        it[j]=sc.nextLine();//接受键盘键入并给数组各个元素赋值
                        iit[j]=Integer.parseInt(it[j]);//注释此行即可单独测试String数组,但是第一元素会为空,且所以元素会后移一位
                }
        }        
        private static void pl(String[] it,int[] iit,int num){
                for(int j=0;j<num;j++){
                        System.out.println(j+"元素分别为  String:"+it[j]+"   ——Int:"+iit[j]);
                }
        }
        public static void main(String[] args){
                Scanner sc= new Scanner(System.in);
                int num=sc.nextInt();
                getit(num,sc);
                pl(it,iit,num);
        }        
}
//报错:Exception in thread "main" java.lang.NumberFormatException: For input string: ""
//第一个输入的值仅仅用来定义数组的长度,为什么在int数组中能很好的运行而在String中会循环一次并给String第一个元素赋空值?
//如果只给String数组赋值,第一个元素总是空值,这是怎么回事?

作者: 杨震    时间: 2012-8-10 20:38
  1. import java.util.Scanner;


  2. public class test1 {
  3.          private static String[] it=null;//声明数组
  4.          private static int[] iit=null;
  5.          
  6.          
  7.          private static void getit(int num,Scanner sc){
  8.                  iit=new int[num];//实例化一个int类型数组,与String数组对比
  9.                  it=new String[num];//实例化一个String类型数组
  10.                  for(int i=0;i<num;i++){
  11.                          it=sc.nextLine();//<font color="magenta">这里应该是it[i]吧</font>
  12.                          iit=Integer.parseInt(it);//<font color="magenta">这里应该是iit[i]和it[i]吧</font>
  13.                  }
  14.          }        
  15.          private static void pl(String[] it,int[] iit,int num){
  16.                  for(int i=0;i<num;i++){
  17.                          System.out.println(i+"元素分别为  String:"+it+"   ——Int:"+iit);
  18.                  }
  19.          }
  20.          public static void main(String[] args){
  21.                  Scanner sc= new Scanner(System.in);
  22.                  int num=sc.nextInt();
  23.                  getit(num,sc);
  24.                  pl(it,iit,num);
  25.          }        
  26. }
  27. //报错:Exception in thread "main" java.lang.NumberFormatException: For input string: ""
  28. //第一个输入的值仅仅用来定义数组的长度,为什么在int数组中能很好的运行而在String中会循环一次并给String第一个元素赋空值?
  29. //如果只给String数组赋值,第一个元素总是空值,这是怎么回事?
复制代码

作者: 徐小骥    时间: 2012-8-10 20:55
杨震 发表于 2012-8-10 20:38

是的 这个网站太智能了 被识别成了斜体,我还在纳闷怎么代码变成斜体了
作者: 徐小骥    时间: 2012-8-10 20:59
杨震 发表于 2012-8-10 20:38

现在改好了 把 改成[j]
作者: 杨震    时间: 2012-8-10 21:19
it=sc.nextLine();//接受键盘键入并给数组各个元素赋值
这个也要改吧
作者: 徐小骥    时间: 2012-8-12 22:55
不要沉啊!!求指导




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2