用户输入一个数字,输出相应的英文结果(包含负数)

lin式程序猿 2016-06-06 08:18:11

package day04;
/*
* 用户输入一个正整数,输出相应英文;例如输入123,输出one two three
*/
import java.util.Scanner;

public class WhileDemo {

public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int x = in.nextInt();
int y = x;
int mode = 1;
while(y >=10){
y /=10;
mode*=10;
}
// System.out.println(mode);
while(mode>0){
switch(x/mode){
case 0 : System.out.print("zero");break;
case 1 : System.out.print("one");break;
case 2 : System.out.print("two");break;
case 3 : System.out.print("three");break;
case 4 : System.out.print("four");break;
case 5 : System.out.print("five");break;
case 6 : System.out.print("six");break;
case 7 : System.out.print("seven");break;
case 8 : System.out.print("eight");break;
case 9 : System.out.print("nine");break;
}
x %=mode;
mode/=10;

}
}
}


帮我补充完代码,实现用户输入负数的情况,并且负数用minus来代替,如输入-123,输出minus one two three,谢谢!
...全文
603 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lin式程序猿 2016-06-23
  • 打赏
  • 举报
回复
引用 3 楼 qq_35232728 的回复:
楼主参考下~
好仔细!!
qq_30969395 2016-06-08
  • 打赏
  • 举报
回复
public class TestMain {

	public static void main(String args[]){
		String str = "-152";
		for(int i=0;i<str.length();i++){
			 switch(str.charAt(i)){
			    case '-':System.out.print("minus");break;
			    case '0': System.out.print("zero");break;
	            case '1' : System.out.print("one");break;
	            case '2': System.out.print("two");break;
	            case '3' : System.out.print("three");break;
	            case '4' : System.out.print("four");break;
	            case '5' : System.out.print("five");break;
	            case '6' : System.out.print("six");break;
	            case '7' : System.out.print("seven");break;
	            case '8' : System.out.print("eight");break;
	            case '9' : System.out.print("nine");break;
			   }
			 System.out.print(" ");
		}
	}
  • 打赏
  • 举报
回复

/*
 * 用户输入一个正整数,输出相应英文;例如输入123,输出one two three
 */
import java.util.Scanner;
 
public class WhileDemo {
 
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int x = in.nextInt();
        if (x < 0) {
        	System.out.print("minus ");
        	x = Math.abs(x);
        }
        int y = x;
        int mode = 1;
        while(y >=10){
            y /=10;
            mode*=10;
        }
//        System.out.println(mode);
        while(mode>0){
            switch(x/mode){
            case 0 : System.out.print("zero");break;
            case 1 : System.out.print("one");break;
            case 2 : System.out.print("two");break;
            case 3 : System.out.print("three");break;
            case 4 : System.out.print("four");break;
            case 5 : System.out.print("five");break;
            case 6 : System.out.print("six");break;
            case 7 : System.out.print("seven");break;
            case 8 : System.out.print("eight");break;
            case 9 : System.out.print("nine");break;
            }
            x %=mode;
            mode/=10;
            System.out.print(" ");
        }
    }
}
输入/输出

-1561
minus one five six one 
快乐先生 2016-06-08
  • 打赏
  • 举报
回复
直接将输入的整数按字符串处理,获取每一个字符,用case输出相应的英文就行了。
bree06 2016-06-08
  • 打赏
  • 举报
回复
给一个用空间换时间的做法.
class Demo51 
{
	static final String[] number = {"minus", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
	public static void main(String[] args) {
		String str = "-122897436603273";
		for (char c : str.toCharArray()) {
			int _c = (_c = c - 47) == -2 ? 0 : _c;
			System.out.print(number[_c] + ' ');
		}
		System.out.println();
	}
}
再给一个完整的对数字合法性的检查
class Demo51 
{
	static final String[] number = {"minus", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
	public static void main(String[] args) {
		// 测试数据
//		String str = "-122897436603273";
//		String str = "-1228974-";
//		String str = "122897436603273";
//		String str = "+122";
//		String str = "1+22";
		String str = "123443a45c33";
		try {
			char[] values = str.toCharArray();
			for (int i = 0; i < values.length; i++) {
				int _c = (_c = values[i] - 47) == -2 ? 0 : _c;
				if (_c == -4 && i == 0) continue; // 首位是+, 如+123
				if (_c == 0 && i > 0) { // 负数但是-号不在第一位, 或者多个-号
					throw new RuntimeException("不是一个合法的负数");
				}
				System.out.print(number[_c] + ' ');
			}
		} catch (ArrayIndexOutOfBoundsException e) {
			System.out.println(str + "不是一个合法的数字");
		} catch (RuntimeException e) {
			e.printStackTrace();
		}
		System.out.println();
	}
}
菜 头 2016-06-07
  • 打赏
  • 举报
回复
楼上+1
nikyotensai 2016-06-07
  • 打赏
  • 举报
回复
这个不难,只是复杂吧!别偷懒
古采尼丶 2016-06-07
  • 打赏
  • 举报
回复
楼主参考下~


rickylin86 2016-06-06
  • 打赏
  • 举报
回复
直接在开始判断获取到的数字是否大于零.如果小于零则先提前输出minus 并且用Math.abs(int)来获取返回绝对值.然后继续你的下面的代码就可以了.
课程背景Modbus 协议是工业自动化控制系统中常见的通信协议,协议的全面理解是个痛点。本课程主讲老师集10多年在Modbus协议学习、使用中的经验心得,结合当前物联网浪潮下Modbus协议开发的痛点,推出这套面向Modbus 协议初学者的课程。本课程不同于以往市面课程只是协议讲解无实现代码,而是采用讲解与实践并重的方式,结合STM32F103ZET6开发板进行手把手编程实践,十分有利于初学者学习。涵盖了学习者在Modbus协议方面会遇到的方方面面的问题,是目前全网首个对Modbus协议进行全面总结的课程。课程名称   协议讲解及实现>>课程内容1、Modbus 协议的基础。2、Modbus协议栈函数编程实现。3、Modbus协议在串行链路编程实现。4、Modbus协议在以太网链路编程实现。5、常见问题的解决方法。带给您的价值通过学习本课程,您可以做到如下:1、全面彻底的理解Modbus协议。2、理解在串行链路,以太网链路的实现。3、掌握Modbus协议解析的函数编程方法,调试工具的使用。4、掌握多个串口,网口同时运行同一个Modbus协议栈的方法。5、掌握Modbus协议下,负数,浮点数等处理方法。讲师简介许孝刚,山东大学工程硕士,副高职称,技术总监。10多年丰富嵌入式系统开发经验,国家软考“嵌入式系统设计师”。2017年获得“华为开发者社区杰出贡献者”奖励。

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧