精华内容
下载资源
问答
  • 本关编程任务补全右侧代码片段中Begin至End中间代码具体要求如下roster1变量为之前的全班花名册,roster2变量为小明统计的全班花名册。 你将被要求输出3行: 第一行为roster1的长度; 第二行为roster2的...

    Educoder–Java面向对象(第四章)- String类【笔记+参考代码】

    第一关

    编程要求

    本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:

    roster1变量为之前的全班花名册,roster2变量为小明统计的全班花名册。 你将被要求输出3行:

    第一行为roster1的长度;

    第二行为roster2的长度;

    第三行为两个花名册是否相同,若相同,输出“相同”;反之输出“不相同”(若姓名顺序不同,也算作不相同)。

    评测说明 平台将自动编译补全后的代码,并生成若干组测试数据,接着根据程序的输出判断程序是否正确。

    以下是测试样例:


    测试输入:

    张三 李四 王五 小明

    李明 张三 小明 王五


    预期输出:

    11

    11

    不相同

    参考代码

    package step1;
    
    import java.util.Scanner;
    
    public class Roster {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            /********** Begin *********/
    		String s1=scanner.nextLine();
    		String s2=scanner.nextLine();
    		System.out.println(s1.length());
    		System.out.println(s2.length());
    		int a=s1.compareTo(s2);
    		if(a!=0)
    			System.out.println("不相同");
    		else
    			System.out.println("相同");
            /********** End *********/
        }
    }
    
    

    此关主要考察对字符串的读入以及compareTo函数的应用。



    第二关

    编程要求
    本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:

    data变量为乱码文件的文本数据,由命令行读入;

    name变量为需要查找的姓名,由命令行读入;

    你将被要求输出若干行,每一行为查找到的姓名的位置。

    评测说明 平台将自动编译补全后的代码,并生成若干组测试数据,接着根据程序的输出判断程序是否正确。
    以下是测试样例:


    测试输入:

    我嗨李四各位哦给李四复位后发我肥沃李四放我访问后李樊红伟四分嚄嚄嚄范围李四佛为红包蓝色配个好玩李四

    李四


    预期输出:

    2

    8

    17

    35

    47

    package step2;
    
    import java.util.Scanner;
    
    public class NameSearch {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            /********** Begin *********/
    		String data=scanner.nextLine();
    		String name=scanner.nextLine();
    		int i=0,a=0;
    		while(i<=data.length()){
    			a=data.indexOf(name,i);
    			if(a!=-1){
    				System.out.println(a);
    				i=a+1;
    			}
    			else
    				i++;
    		}
            /********** End *********/
        }
    }
    
    

    indexOf() 方法有以下四种形式:

    • public int indexOf(int ch): 返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。
    • public int indexOf(int ch, int fromIndex): 返回从 fromIndex 位置开始查找指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。
    • int indexOf(String str): 返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。
    • int indexOf(String str, int fromIndex): 返回从 fromIndex 位置开始查找指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。

    第三关

    编程要求
    请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

    判断输入的Java文件名是否正确,判断邮箱格式是否正确。其中:合法的文件名应该以 .java 结尾;合法的邮箱名中至少要包含 @ , 并要求@ 在 . 之前。 测试说明 文件名(fileName)和邮箱(email)会作为函数的参数传入。


    输入:

    HelloWorld.java laurenyang@edu.com

    输出:

    Java文件名正确

    邮箱名正确


    输入:

    .java

    123456@qq.@com

    输出:

    Java文件名无效

    邮箱名无效

    参考代码

    package step3;
    
    public class HelloWorld {
    
    	public void judge(String fileName,String email){
    	//请在此添加实现代码
    	/********** Begin **********/
    	if(fileName.lastIndexOf(".")==-1)
    		System.out.println("Java文件名无效");
    	else{
    		String s=fileName.substring(fileName.lastIndexOf("."),fileName.length());
    		if(fileName.equals(".java")||(s.equals(".java")==false))
    			System.out.println("Java文件名无效");
    		else
    			System.out.println("Java文件名正确");
    	}
    	int a=email.indexOf('@'),b=email.indexOf('.');
    
    	if(a!=-1&&b!=-1&&email.lastIndexOf('@')<email.indexOf('.'))
    		System.out.println("邮箱名正确");
    	else
    		System.out.println("邮箱名无效");
    	}
    }
    
    


    第四关

    编程要求
    本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:

    data变量为需要进行反转的文本;

    ans变量为反转后的文本。

    评测说明 平台将自动编译补全后的代码,并生成若干组测试数据,接着根据程序的输出判断程序是否正确。

    以下是测试样例:


    测试输入:

    oT eb ro ton ot eb


    预期输出:

    To be or not to be


    参考代码

    package step4;
    
    public class Reverse {
        public static StringBuffer start(String data) {
            StringBuffer ans = new StringBuffer("");
            /********** Begin *********/
    		String[] strs =data.split(" ");
    		for(int i=0;i<strs.length;i++){
            	StringBuffer bns = new StringBuffer(strs[i]);
    			ans.append(bns.reverse());
    			ans.append(" ");
    		}
            /********** End *********/
            return ans;
        }
    }
    
    

    split函数的用法:https://blog.csdn.net/shenzhenNBA/article/details/8086110

    String与StringBuffer的区别
    StringBuffer的内部实现方式和String不同,StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类。所以在实际使用时,如果经常需要对一个字符串进行修改,例如插入、删除等操作,使用StringBuffer要更加适合一些。
    String:在String类中没有用来改变已有字符串中的某个字符的方法,由于不能改变一个java字符串中的某个单独字符,所以在JDK文档中称String类的对象是不可改变的。然而,不可改变的字符串具有一个很大的优点:编译器可以把字符串设为共享的。
    StringBuffer:StringBuffer类属于一种辅助类,可预先分配指定长度的内存块建立一个字符串缓冲区。这样使用StringBuffer类的append方法追加字符比String使用 + 操作符添加字符到一个已经存在的字符串后面有效率得多。因为使用 + 操作符每一次将字符添加到一个字符串中去时,字符串对象都需要寻找一个新的内存空间来容纳更大的字符串,这无凝是一个非常消耗时间的操作。添加多个字符也就意味着要一次又一次的对字符串重新分配内存。使用StringBuffer类就避免了这个问题。
    StringBuffer是线程安全的,在多线程程序中也可以很方便的进行使用,但是程序的执行效率相对来说就要稍微慢一些。
    StringBuffer的常用方法
    StringBuffer类中的方法要偏重于对字符串的变化例如追加、插入和删除等,这个也是StringBuffer和String类的主要区别。
    1、append方法
    public StringBuffer append(boolean b)
    该方法的作用是追加内容到当前StringBuffer对象的末尾,类似于字符串的连接。调用该方法以后,StringBuffer对象的内容也发生改变,例如:
    StringBuffer b = new StringBuffer(“abc”);
    sb.append(“true”);
    则对象b的值将变成”abctrue”。
    2、deleteCharAt方法
    public StringBuffer deleteCharAt(int index)
    该方法的作用是删除指定位置的字符,然后将剩余的内容形成新的字符串。例如:
    StringBuffer b = new StringBuffer(“Test”);
    b. deleteCharAt(1);
    该代码的作用删除字符串对象sb中索引值为1的字符,也就是删除第二个字符,剩余的内容组成一个新的字符串。所以对象b的值变为”Tst”。
    还存在一个功能类似的delete方法:
    public StringBuffer delete(int start,int end)
    该方法的作用是删除指定区间以内的所有字符,包含start,不包含end索引值的区间。例如:
    StringBuffer b = new StringBuffer(“TestString”);
    b. delete (1,4);
    该代码的作用是删除索引值1(包括)到索引值4(不包括)之间的所有字符,剩余的字符形成新的字符串。则对象b的值是”TString”。
    3、insert方法
    public StringBuffer insert(int offset, String s)
    该方法的作用是在StringBuffer对象中插入内容,然后形成新的字符串。例如:
    StringBuffer b = new StringBuffer(“TestString”);
    b.insert(4,“false”);
    该示例代码的作用是在对象b的索引值4的位置插入字符串false,形成新的字符串,则执行以后对象b的值是”TestfalseString”。
    4、reverse方法
    public StringBuffer reverse()
    该方法的作用是将StringBuffer对象中的内容反转,然后形成新的字符串。例如:
    StringBuffer b = new StringBuffer(“abc”);
    b.reverse();
    经过反转以后,对象b中的内容将变为”cba”。
    5、setCharAt方法
    public void setCharAt(int index, char ch)
    该方法的作用是修改对象中索引值为index位置的字符为新的字符ch。例如:
    StringBuffer b = new StringBuffer(“abc”);
    b.setCharAt(1,’D’);
    则对象b的值将变成”aDc”。
    6、trimToSize方法
    public void trimToSize()
    该方法的作用是将StringBuffer对象的中存储空间缩小到和字符串长度一样的长度,减少空间的浪费。
    7、构造方法:
    StringBuffer s0=new StringBuffer();分配了长16字节的字符缓冲区
    StringBuffer s1=new StringBuffer(512);分配了512字节的字符缓冲区
    8、获取字符串的长度: length()
    StringBuffer s = new StringBuffer(“www”);
    int i=s.length();
    m.返回字符串的一部分值
    substring(int start) //返回从start下标开始以后的字符串
    substring(int start,int end) //返回从start到 end-1字符串
    9.替换字符串
    replace(int start,int end,String str)
    s.replace(0,1,“qqq”);
    10.转换为不变字符串:toString()

    展开全文
  • Educoder题目

    千次阅读 2020-04-03 20:51:04
    Educoder题目 成为班长的小明最近好不忙,刚统计好了全班的花名册,班主任又交给了他一项任务...本关编程任务补全右侧代码片段中Begin至End中间代码具体要求如下: data变量为乱码文件的文本数据,由命令行...

    Educoder题目

    成为班长的小明最近好不忙,刚统计好了全班的花名册,班主任又交给了他一项任务。班主任的电脑不幸中了病毒,有一个文件变成了一堆乱码,但是班主任仔细查看了文件后发现,在这堆毫无意义的乱码中,还是有零散的班上同学的姓名穿插其中,现在班主任让小明将其位置找出来。

    本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:

    data变量为乱码文件的文本数据,由命令行读入;

    name变量为需要查找的姓名,由命令行读入;

    你将被要求输出若干行,每一行为查找到的姓名的位置。

    评测说明 平台将自动编译补全后的代码,并生成若干组测试数据,接着根据程序的输出判断程序是否正确。

    以下是测试样例:

    测试输入:

    我嗨李四各位哦给李四复位后发我肥沃李四放我访问后李樊红伟四分嚄嚄嚄范围李四佛为红包蓝色配个好玩李四

    李四

    预期输出:

    2

    8

    17

    35

    47

    代码如下:

    package step2;
    
    import java.util.Scanner;
    
    public class NameSearch {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            /********** Begin *********/
    		String data = scanner.nextLine();
    		String name = scanner.nextLine();
    		int count = 0;
    		while(data.indexOf(name) != -1 )
    		{
    			System.out.println(data.indexOf(name) + count);
    			count += data.indexOf(name) + name.length();
    			data = data.substring(data.indexOf(name) + name.length());			
    		}
    
    
    
            /********** End *********/
        }
    }
    
    展开全文
  • Educoder题目:列表和for循环答案解析.md
  • Java面向对象 - String类

    2021-04-08 13:53:36
    本关编程任务补全右侧代码片段中Begin至End中间代码具体要求如下roster1变量为之前的全班花名册,roster2变量为小明统计的全班花名册。 你将被要求输出3行: 第一行为roster1的长度; 第二行为roster2的...

    第1关length()方法与compareTo()方法的使用 - 花名册
    编程要求
    本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:
    roster1变量为之前的全班花名册,roster2变量为小明统计的全班花名册。
    你将被要求输出3行:
    第一行为roster1的长度;
    第二行为roster2的长度;
    第三行为两个花名册是否相同,若相同,输出“相同”;反之输出“不相同”(若姓名顺序不同,也算作不相同)。

    评测说明
    平台将自动编译补全后的代码,并生成若干组测试数据,接着根据程序的输出判断程序是否正确。
    以下是测试样例:
    测试输入:
    张三 李四 王五 小明
    李明 张三 小明 王五
    预期输出:
    11
    11
    不相同

    package step1;
    
    import java.util.Scanner;
    
    public class Roster {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            /********** Begin *********/
            Scanner sc = new Scanner(System.in);
            String string1 =sc.nextLine();
            String string2 = sc.nextLine();
            System.out.println(string1.length());
             System.out.println(string2.length());
            int a = string1.compareTo(string2);
            if(a != 0){
                System.out.println("不相同");
            }
            else{
                System.out.println("相同");
            }
            /********** End *********/
        }
    }
    
    

    第2关:substring()方法与indexOf()方法的使用 - 姓名查找
    编程要求
    本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:
    data变量为乱码文件的文本数据,由命令行读入;
    name变量为需要查找的姓名,由命令行读入;
    你将被要求输出若干行,每一行为查找到的姓名的位置。

    评测说明
    平台将自动编译补全后的代码,并生成若干组测试数据,接着根据程序的输出判断程序是否正确。
    以下是测试样例:

    测试输入:
    我嗨李四各位哦给李四复位后发我肥沃李四放我访问后李樊红伟四分嚄嚄嚄范围李四佛为红包蓝色配个好玩李四
    李四
    预期输出:
    2
    8
    17
    35
    47

    package step2;
    
    import java.util.Scanner;
    
    public class NameSearch {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            /********** Begin *********/
            String data = sc.nextLine();
            String name = sc.nextLine();
            int i = 0, str = 0;
            while(i <= data.length()){
                str = data.indexOf(name, i);  //从第i个位置开始查找name
                if(str != -1){
                    System.out.println(str);
                    i = str + 1;
                }
                else  i++;
            }
            /********** End *********/
        }
    }
    
    

    第3关:String串类操作 - 文件名与邮箱验证
    编程要求
    请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:
    判断输入的Java文件名是否正确,判断邮箱格式是否正确。其中:合法的文件名应该以 .java 结尾;合法的邮箱名中至少要包含 @ , 并要求 @ 在 . 之前。
    测试说明
    文件名(fileName)和邮箱(email)会作为函数的参数传入。

    输入:
    HelloWorld.java
    laurenyang@edu.com
    输出:
    Java文件名正确
    邮箱名正确

    输入:
    .java
    123456@qq.@com
    输出:
    Java文件名无效
    邮箱名无效

    package step3;
    
    import java.util.*;
    public class HelloWorld {
    
    	public void judge(String fileName,String email){
    		//请在此添加实现代码
    /********** Begin **********/
      int point = fileName.lastIndexOf(".");
      String name = fileName.substring(point+1,fileName.length());
      if(point != 0&&point != -1&& name.equals("java")){
          System.out.println("Java文件名正确");
      }else{
          System.out.println("Java文件名无效");
      }
      int index1 = email.lastIndexOf(".");
      int index2 = email.lastIndexOf("@");
      if(index2 != -1&&index2<index1){
          System.out.println("邮箱名正确");
        
      }else{
          System.out.println("邮箱名无效");
      }
    
    /********** End **********/
    	}
    }
    

    第4关:StringBuffer类的定义和使用 - 字母反转
    编程要求
    本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:
    data变量为需要进行反转的文本;
    ans变量为反转后的文本。
    评测说明
    平台将自动编译补全后的代码,并生成若干组测试数据,接着根据程序的输出判断程序是否正确。

    以下是测试样例:
    测试输入:
    oT eb ro ton ot eb
    预期输出:
    To be or not to be

    package step4;
    
    public class Reverse {
        public static StringBuffer start(String data) {
            StringBuffer ans = new StringBuffer();
            /********** Begin *********/
            String[] s = data.split(" ");
            for(int i=0;i<s.length;i++){
                if(i != 0)
                ans.append(" ");
                ans.append(new StringBuffer(s[i]).reverse());
            }
            /********** End *********/
            return ans;
        }
    }
    
    
    展开全文
  • String: 不可变的字符序列 两个string内容一样则相等,若使用new则不等 *String s* s.toUpperCase( );...从0开始计数,返回“Java”首元素在字符串的位数,若不存在返回-1 s.equals(s2); 相等true s.equalsIgn

    String:
    不可变的字符序列
    两个string内容一样则相等,若使用new则不等

    *String s*
    s.toUpperCase( );将字符串变大写
    s.toLowerCase( );将字符串变小写
    s.charAt(1);0开始计数,返回第1个字符
    s.length( );     返回字符串的长度,包括空格
    s.indexOf("java");0开始计数,返回“Java”首元素在字符串中的位数,若不存在返回-1
    s.equals(s2);    相等true
    s.equalsIgnoreCase(s2);忽略大小写相等返回true
    s2=s.repalce('j','v');  把j换成v返回一个新的字符串
    s2=s.trim( );    删除字符串前后空格,返回新的字符串
    
    int j=12345;
    String s = String.valueOf(j);转换成string类,toString
    System.out.println("j 是"+s.lenghth( )+"位数");
    

    StingBuffer
    Unicode字符可变序列线程安全

    StingBuffer  b
    b.append('?').append("\n");在之后添加字符
    String str= b.toString();转换成string
    b.equals(b2);            内容一样如果new了返回false
    

    Wrapper
    基本值初始化后不能改变

    int j;
    Interger i =new Interger(100);赋值给类
    Interger l =100;              自动封装,int转换成Interger类
    j = i.intValue( );            返回类对应的int数值
    j = l;                        自动解封,Interger类换成int
    i=Interger.parseInt("000");   字符串换算成int
    
    
    double d2;
    Double d =new Double("000.000");
    j = d.intValue( );             返回类对应的int数值
    d2=Double.parseDouble("0.00"); 公有静态方法,字符串换算成double
    
    d2=Double.valueOf("0.0").doubleValue( );
    将字符串转化成一个Double对象
    再调用这个对象的方法返回其回对应的double数值
    
    
    float f;
    f = i.floatValue( );      返回Interger类对应的float数值
    f = d.floatValue( );      返回Double类对应的float数值
    
    展开全文
  • Java笔记06-面向对象01

    2015-03-13 09:39:19
    1 :面向对象(必须掌握) (1)面向对象 面向对象是基于面向过程的编程思想 面向过程:强调的是每一个功能的步骤 面向对象:强调的是对象,然后由对象去调用功能 (2)面向对象的思想特点 A:是一种更符合我们...
  • 面向对象 String类

    2015-11-24 12:14:19
    1 实例化String对象1.1 直接赋值public class StringDemo01 { public static void main(String[] args) { String name = "IronMan" ; //直接赋值 System.out.println("姓名:"+name) ; } }1.2 通过ne
  • 本关编程任务补全右侧代码片段中Begin至End中间代码具体要求如下roster1变量为之前的全班花名册,roster2变量为小明统计的全班花名册。 你将被要求输出3行: 第一行为roster1的长度; 第二行为roster2的...
  • 1. length()方法与compareTo()方法的使用 - 花名册 任务描述 在最近的班干部竞选,小明如愿以偿的当上了班长,成为班长后的第一件事,便是统计制作全班同学的花名册。由于上一任班长是个马大哈,之前的花名册可能...
  • 文章目录第1关:length()方法与compareTo()方法的使用 - 花名册任务描述相关知识编程要求评测说明参考答案JavanextLine()和next()的区别 第1关:length()方法与compareTo()方法的使用 - 花名册 任务描述 在最近的...
  • 成为班长的小明最近好不忙,刚统计好了全班的花名册,班主任又交给了他一...本关编程任务补全右侧代码片段中Begin至End中间代码具体要求如下: data变量为乱码文件的文本数据,由命令行读入; name变量为需...
  • 本关编程任务补全右侧代码片段中Begin至End中间代码具体要求如下roster1变量为之前的全班花名册,roster2变量为小明统计的全班花名册。 你将被要求输出3行: 第一行为roster1的长度; ...

空空如也

空空如也

1
收藏数 14
精华内容 5
关键字:

本关的编程任务是补全右侧代码片段中begin至end中间的代码,具体要求如下:roster1

友情链接: zbqlbdl.rar