Java字符串的输入输出实验

  最近安装了MyEclipse,感觉编译器挺好用的,但是电脑是不是装太多东西了,反正使用起来不流畅,如果今年能在年尾过四级,就给自己换台新电脑!

  言归正传,Java中和C/C++不太一样的是中文字符在C/C++中有2个字符,而实验中发现Java只有一个。然后就是我用in.next()这样输入流类似于C/C++中的scanf(%s*n),也就是说遇到一个空格就多一个字符串,而in.nextLine()则是读入一行,但是,如果你前面有输入东西的话,并且要用到回车,这时候你就必须在之间多一个in.nextLine()来吃掉一个回车键,类似于C/C++中getchar()的效果。

  还有注意的一点是,输入的字符串如果是中文它会一直读不出来,但是用MyEclipse却可以,这可能使DrJava编译器比较古老,总之输入最好改成英文。除此之外Java中的类的使用虽然大同小异,但是Java中还是比较地繁琐!这次找了挺久的BUG是在Java中空串""和NULL是不一样的,不能用str.isEmpty()来判断是否为"",这点要注意了!

代码如下:

import java.util.*;

class ArrayTest2{
  static String f(String str){
    if(str.length()==0 || str.charAt(0)>'9'||str.charAt(0)<'0')
      return "";//空串的时候要注意判断,防止异常
    return str.charAt(0)+f(str.substring(1));
  }
  static int f1(int data)
  {
    if(data/10==0)
      return 1;
    return f1(data/10)+1;
  }
  public static void main(String[] args){
    Scanner in=new Scanner(System.in);
    int i,j,DetSize;
    double Max,Major,Unmajor;
    String str,str1;
    while(true){
      System.out.println("****请输入一个大于0的整数,否则结束矩阵构建****");
      System.out.println("请输入矩阵的规模:");
      DetSize=in.nextInt();
      if(DetSize<=0){
        System.out.println("End!");
        break;
      }
      System.out.println("请输入矩阵的数据:");
      double[][] Det=new double[DetSize][DetSize]; //矩阵
      double[] A=new double[DetSize];
      double[] B=new double[DetSize];
      Major=Unmajor=Max=0;
      for(i=0;i<DetSize;i++){
        for(j=0;j<DetSize;j++){
          Det[i][j]=in.nextDouble();
          if(i==0&&j==0) Max=Det[i][j];
          else if(Max<Det[i][j]) Max=Det[i][j];
          A[i]+=Det[i][j];
          B[j]+=Det[i][j];
          if(i==j) Major+=Det[i][j];
          if(i+j==DetSize-1) Unmajor+=Det[i][j];
        }
      }
      System.out.println("****请输入你想要查看的矩阵信息****");
      System.out.println("请输入类似于“maindiag”“unmaindiag”、“3row”“4rank”等这样的信息");
      System.out.println("按0返回重新构造矩阵");
      in.nextLine();
      while(true){
        str=in.nextLine();
        if(str.equals("0"))
         break;
        else if(str.equals("maindiag")) System.out.println("主对角线的和: "+Major);
        else if(str.equals("unmaindiag")) System.out.println("副对角线的和: "+Unmajor);
        else if(str.equals("Max")) System.out.println("最大值: "+Max);
        else {
          str1=f(str);
          if(str1.equals("")){
            System.out.println("你输入的格式有误!请重新输入.");
            continue;
          }
          j=Integer.parseInt(str1);
          i=f1(j);
          if(j<1 || j>DetSize || i==str.length())
            System.out.println("你输入的格式有误!请重新输入.");
          else if(str.substring(i).equals("row")) System.out.println("第"+j+"行的和: "+A[j-1]);
          else if(str.substring(i).equals("rank")) System.out.println("第"+j+"列的和: "+B[j-1]);
          else System.out.println("你输入的格式有误!请重新输入.");
      }
    }
  }
}
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
06-19 14:46
和女友两个人马上毕业,现在我在鹅实习995,周六日偶尔也去北京;她在北京金融007,经常忙到后半夜,周末也没啥休息机会两个人现在都不咋聊天了,一句话隔半小时甚至半天才回。&nbsp;她是个很优秀的妹子,工作也很努力,是值得学习一辈子的人。我在努力工作求转正,即便不行至少赚到了一段不错的实习经历。已经异地了半年,接下来可能还会持续是这个状态。我们都算是对方重要的人,只是感觉看上去不是很有未来的样子。希望牛友们给点的鼓励
梦旅奇缘:很难。异地首先就已经很难了,加上妹子是金融行业,忙碌高压,对情感需求很高,而且见惯纸醉金迷,你的很多优势在她那里可能就不算什么了。这种情况下,在她们那里遇到一个能及时照顾她的人,即使那人可能很多条件不如你,你也有可能被分手。 说白了,两个卷王就不太适合在一起。因为卷王最大的优势,在另一个卷王那里就不算优势了。
点赞 评论 收藏
分享
06-18 16:45
门头沟学院 Java
玩脱了,吊着两家结果两家都不要鼠鼠了,我真想给自己两巴掌。
凉风落木楚山秋:当作是你把这两家公司从地球开除了就行了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务