`
静静的小谱
  • 浏览: 18930 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

异常例题2

    博客分类:
  • java
阅读更多
2. 设计一个函数, 接受一个点和一个字符串作为参数,点表示一个玩家所在的坐标,字符串可能包括 wasd, w 表示玩家向前移动 (纵坐标 +1), s 表示玩家向后移动, a 表示玩家向左移动 (横坐标 -1), d 表示玩家向右移动, 如果字符串中出现非 wasd 的字符, 则抛出一个异常,玩家一轮之多只能移动八次, 如果超出, 也抛出异常, 然后让用户重新输入。返回值: 一个点, 表示该玩家移动后的坐标

public class ParseInt {		
	public static Point move(Point start, String input) { // 可重入性,无论该方法在运行过程中抛出何种异常,程序的状态不应该发生改变
		if (input.length() > 8) {
			throw new RuntimeException();
		}
		int x = start.getX();
		int y = start.getY();
		for (int i = 0; i < input.length(); ++i) {
			char ch = input.charAt(i);
			switch (ch) {
			case 'w':
				++y;
				break;
			case 's':
				--y;
				break;
			case 'a':
				--x;
				break;
			case 'd':
				++x;
				break;
			default:
				throw new RuntimeException(input + ":" + ch);
			}
		}
		return new Point(x, y);
	}

	public static void main(String[] args) {
		Point start = new Point(0, 0);
		Scanner in = new Scanner(System.in);
		while (true) {
			try {
				Point end = move(start, in.nextLine());
				System.out.println(end.getX() + ", " + end.getY());
				break;
			} catch (RuntimeException e) {
				System.out.println("Invalid input, not moved. Please input again.");
				System.out.println(start.getX() + ", " + start.getY());
			}
		}
	}
}

class Point {
	private int x = 0;
	private int y = 0;

	public Point(int x, int y) {
		this.x = x;
		this.y = y;
	}

	public int getX() {
		return x;
	}

	public void setX(int x) {
		this.x = x;
	}

	public int getY() {
		return y;
	}

	public void setY(int y) {
		this.y = y;
	}

	public void translate(int deltaX, int deltaY) {
		this.x += deltaX;
		this.y += deltaY;
	}
}
分享到:
评论

相关推荐

    java异常处理例题代码.pdf

    如果字符串长度大于2,则将其设为null,并在catch块中捕获NullPointerException异常。这个示例还展示了如何在方法声明中使用throws关键字声明该方法可能抛出的异常。 通过对这些程序的分析,可以了解到Java中异常...

    java异常处理例题代码文.pdf

    java异常处理例题代码文 java异常处理是java编程语言中非常重要的一部分,java异常处理机制可以使程序更加robust和可靠。在本文中,我们将通过五个例子来展示java异常处理的知识点。 java异常处理的概念 java异常...

    C#异常处理总结及简单实例

    2、catch:程序通过异常处理程序捕获异常。catch 关键字表示异常的捕获。 3、finally:finally 块用于执行给定的语句,不管异常是否被抛出都会执行。 例如如果你打开一个文件,不管是否出现异常文件都

    java 例题 java 例题java 例题java 例题java 例题

    异常处理是Java编程中不可或缺的一部分,通过例题,你将学会如何使用try-catch-finally语句块来捕获和处理运行时错误,以增强程序的健壮性。 对于更高级的主题,如多线程和网络编程,例题可以帮助你理解并发执行的...

    《Java2程序设计实用教程(第2版)》例题

    《Java2程序设计实用教程(第2版)》是一本深受程序员欢迎的Java学习书籍,其例题部分包含了丰富的编程实例,旨在帮助读者巩固基础知识,提升编程技能。这些例题覆盖了Java语言的核心概念,包括但不限于语法、面向对象...

    经典的java例题,常用

    例题可能会设计出需要捕获和处理异常的场景,教导开发者如何使用try-catch-finally语句块。 4. **集合框架**:Java集合框架包括ArrayList、LinkedList、HashMap等,是存储和操作数据的重要工具。例题可能涵盖如何...

    张思民JAVA例题

    5. **第六章例题**:可能涵盖了异常处理,如try-catch-finally结构,不同类型的异常,以及自定义异常的创建。 6. **第七章例题**:可能涉及面向对象的高级主题,如接口、内部类、抽象类以及集合框架的初步接触,如...

    c#经典100例题

    2. **数组与集合** - 数组:理解一维、二维数组以及多维数组的概念和操作。 - 集合类:List、ArrayList、HashSet等集合的使用和操作,如添加、删除、查找元素。 3. **字符串处理** - 字符串操作:学习字符串的...

    C++课后答案及例题

    2. 编译执行:动手将代码输入到编译器中,运行并观察结果,这样可以加深理解,同时检查代码的正确性。 3. 修改调试:尝试修改例题代码,看看变化如何影响程序行为,这有助于掌握各种情况的处理。 4. 解答习题:...

    JAVA程序编程例题

    例题可能会设计到如何正确抛出和捕获异常,以保证程序的健壮性。 4. **集合框架**:Java集合框架包括List、Set、Map等接口及其实现类,如ArrayList、LinkedList、HashSet、HashMap等。通过例题,可以学习如何存储和...

    JAVA经典程序例题

    2. **面向对象编程**:Java的核心特性是面向对象,因此例题会涵盖类、对象、封装、继承和多态性。理解类的构造器、访问修饰符以及如何创建和使用对象至关重要。 3. **异常处理**:Java有强大的异常处理机制,通过...

    C++经典练习例题200例

    C++是一种广泛应用于系统...无论是对基本语法的巩固,还是对面向对象编程、模板、异常处理和文件操作的理解,这套例题都将提供宝贵的实践机会。不断挑战自己,通过解题深化理解,是成为一名优秀的C++开发者的关键步骤。

    java源码150个例题

    2. ** chap03 **:这一章可能涉及到面向对象编程的基础,如类的定义、对象的创建、封装、继承和多态性。你可能会看到如何定义类,使用构造函数,以及理解super关键字和this关键字的应用。 3. ** chap05 **:在这个...

    c++ 例题 c++例题

    2. **函数**:C++中的函数是代码的重用单元,包括函数定义、函数调用、参数传递等。 3. **指针**:C++的指针是其强大之处,它允许直接操作内存地址,实现动态内存分配和数据结构的高效实现。 4. **类与对象**:C++...

    c++基础例题200个

    9. **异常处理**:C++的异常处理机制(try、catch、throw)用于处理运行时错误,是编写健壮代码的重要工具。 10. **预处理器宏**:预处理器(#include、#define等)用于处理源代码的预编译阶段,例如包含头文件,...

    清华大学C++例题源代码

    2. **类与对象**: C++的核心是面向对象编程,通过类定义数据结构和行为。在例题中,你会看到如何声明类、创建对象以及实现封装、继承和多态性。 3. **函数与重载**: C++中的函数用于组织代码和执行特定任务。源代码...

Global site tag (gtag.js) - Google Analytics