自我标记:String数据结构的轻应用
辣鸡小玲的题解
利用CSND这个平台记录一下我的成长历程。
UVA445 JAVA版本
Marvelous Mazes
水中之水,天河净水
题目我就不贴了,一搜一大把
贴代码了
import java.util.Scanner;
import java.util.*;
public class Main {//MarkⅠ等会解释
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
while (reader.hasNext()) //当能读入整行的时候
{
String s = reader.nextLine();//读入整行
if ("".equals(s))// 读入空行则输出空行
System.out.println();
else {
int length = s.length();//是数组就可以用.length()获得长度噢
int i = 0;
int j = 0;
int copy = 0;
for (i = 0; i < length; i++) {
char ch = s.charAt(i);//得到下标为i的字符串中的字符元素
if (ch >= '0' && ch <= '9')// 如果是数字,更新copy
copy = copy + ch - '0';
else// 不是数字,是*、!、b、T、X……
{
switch (ch) {
case '!': // 读入!则输出空行
System.out.println();//有ln的,输出完会换行
break;
case 'b': // 读入b则输出空格
for (j = 0; j < copy; j++) {
System.out.print(' ');//没有ln的,输出完不换行
}
copy = 0;// 输出完成,重置copy
break;
default:
for (j = 0; j < copy; j++) {
System.out.print(ch);
}
copy = 0;// 输出完成,重置copy
break;
}
}
}
System.out.println();// 循环结束之后的换行符
}
}
}
}
MARKⅠ
最大的那个类名要取名为Main
大部分常见OJ要求只能提交一个源代码段落,即只能有一个.java文件。
通常文件命名为Main,程序入口为public static void main().
而Java要求public的类必须与所在文件同名。
因此只能是
public class Main{
public static void main(String [] args){
}
}
当你希望另外构建class时,不能再使用public关键词。
使用java.util.Scanner或Reader等类封装System.in时,注意只能有一个封装实例,否则可能弄丢输入数据。
作者:张浩斌
链接:http://www.zhihu.com/question/28337144/answer/40416573
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
虽然我的博客你们可以随便转噢,但是我转别人的还是要打上“版权所有,侵权必究”这八个字,上面这个哥哥的知乎上还写了个“从C到Java的小贴士”,我一并贴了,大家也一并“版权所有,侵权必究”哈。
这学期又要给网工同学上Java课了,先在这里写一点tips要点。
1.public static void main(String []args) 是死规定,没有为什么。
2.[ ]是一种对象,自带.length
3.所有方法都写成static的,可以在java的对象里面写过程式程序。
4.String不是char[],汉字也不是两个字节,”中文”.length()==2
5.java.util.*是入门的必经之路,熟悉里面的List/Vector/Collections等常用工具类可以顺利解决大部分问题。
6.switch在1.7之后可以用String类型(学校OJ是1.6,不支持)
7.Integer.parseInt() Double.parseDouble() String.valueOf() 是常见数据类型转换工具。
8.System.out.format System.out.printf 用起来跟stdio.h的printf是一样的。
9.String.format()可以快速高效的拼接字符串。
10.String是个final类,不能继承,这是有意为之。
11.OJ上做题只有Main这个类可以是public,其他类不能用public。
12.new Scanner(System.in)这个操作只能做一次。
13.scanner.next()之后如果当前输入位置在行尾,nextLine()将只能得到一个””。
14.有的题用Scanner.nextLine()+String.split(” “)处理起来编码效率最高
小玲现在还看不懂,说不定以后就能看懂了。