public class Work2 { public static void main(String[] args) { Scanner input=new Scanner(System.in); System.out.println("请输入三位数"); int number=0; //判断输入值是否为水仙花 while(true) { //判断输入值是否为int类型 if(input.hasNextInt()) { number=input.nextInt(); System.out.println("您输入的是int类型数字"); }else { input.nextInt(); System.err.println("您输入的不是int类型数字"); } //判断输入值是否为三位数 if(number>99||number<999) { }else { System.err.println("请输入三位数,并且是正整数"); } int num1=number%10;//分离个位 int num2=number/10%10;//分离十位 int num3=number/100;//分离百位 int num = num1*num1*num1+num2*num2*num2+num3*num3*num3; if (num==number) { System.out.println("您输入是的水仙花"); break; }else { System.err.println("您输入的不是水仙花"); } } input.close(); } }
时间: 2023-06-18 13:06:45 浏览: 81
这是一个 Java 程序,实现了判断一个三位数是否为水仙花数的功能。水仙花数是指一个三位数的每个位上的数字的立方和等于该数本身。程序的具体实现如下:
1. 定义一个 Scanner 对象 input,用来读取用户输入的数字。
2. 输出提示信息,让用户输入一个三位数。
3. 使用 while 循环,不断读取用户输入的数字,并进行判断。
4. 判断用户输入的数字是否为 int 类型,如果不是 int 类型,则输出错误信息,并继续等待用户输入。
5. 判断用户输入的数字是否为三位数,如果不是三位数,则输出错误信息,并继续等待用户输入。
6. 分离出用户输入的数字的个位、十位和百位。
7. 计算出用户输入的数字的立方和,如果等于用户输入的数字,则说明该数字是水仙花数,输出提示信息并结束循环;否则输出错误信息并继续等待用户输入。
8. 关闭 Scanner 对象。
需要注意的是,程序中使用了 if...else... 语句和 while 循环语句来实现流程控制,以及 Scanner 对象来读取用户输入的数字。
相关问题
下面的代码哪里出错了,该怎么解决:package week_14; import java.io.*; public class Work_02 { public static void main(String[] args) throws IOException{ // 从键盘读取一组字符串 System.out.print("请输入一组字符串:"); String input = System.console().readLine(); // 将字符串转换为字节数组 byte[] bytes = input.getBytes(); // 输出每个字符的ASCI码值 System.out.println("对应的ASCI码值为:"); for (byte b : bytes) { System.out.print(b + " "); } System.out.println(); // 将ASCI码值写入文件 try (FileInputStream output = new FileInputStream("output.txt")) { for (byte b : bytes) { output.write(b); } }catch(IOException e) { }}}
这段代码的问题在于,它尝试读取用户输入时使用了 `System.console().readLine()`,但是这种方式只适用于在命令行窗口中运行的程序,如果在IDE中运行程序会导致空指针异常。
要解决这个问题,可以使用 `Scanner` 类来从控制台读取用户输入,需要在代码中添加 `import java.util.Scanner;`,然后修改代码如下:
```
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一组字符串:");
String input = scanner.nextLine();
```
此外,还需要注意一下文件输出流的写入方式,应该使用 `FileOutputStream` 而不是 `FileInputStream`,修改代码如下:
```
try (FileOutputStream output = new FileOutputStream("output.txt")) {
for (byte b : bytes) {
output.write(b);
}
} catch (IOException e) {
e.printStackTrace();
}
```
经过这些修改,代码就可以正常运行了。
6-5 软件外包公司 分数 15 作者 刘凤良 单位 天津仁爱学院 有一家软件外包公司,可以外派开发人员,该软件公司有两个角色,普通开发人员和项目管理,它们有共同的属性"姓名","年龄" 普通开发人员有自己特有的属性"工作经验",他的工作内容是"开发项目",项目经理有自己特有的属性“项目管理经验”,他的工作内容是项目管理,对外的报价是普通开发人员每天 500 元,超过 60 天每天 400 元,项目经理每天 800 元,超过 60 天每天 600 元,有一家银行需要1名项目经理,2 名开发人员,现场开发 90 天,计算银行需要付给软件公司的总金额。 函数接口定义: void work(); //工作内容 double calcMoney(int days); //计算开发 days 天所需金额 裁判测试程序样例: import java.util.Scanner; public class Main { public static void main(String[] args) { Employee[] employees = new Employee[3]; Developer d1 = new Developer("小王", 23); Developer d2 = new Developer("小李", 22); Manager manager = new Manager("老张", 32); employees[0] = d1; employees[1] = d2; employees[2] = manager; //输入开发天数 Scanner input = new Scanner(System.in); int days = input.nextInt(); //计算所需金额 double totalMoney = 0; for (Employee employee : employees) { totalMoney += employee.calcMoney(days); } System.out.println("开发:" + days + "天,总共需要支付:" + totalMoney + "元!"); } } /* 请在这里填写答案 */ 输入样例: 90 输出样例: 开发:90天,总共需要支付:126000.0元!
答案如下:
class Employee {
protected String name;
protected int age;
protected double price;
public Employee(String name, int age) {
this.name = name;
this.age = age;
}
public void work() {
System.out.println("工作内容是开发项目");
}
public double calcMoney(int days) {
double totalMoney = days * price;
if (days > 60) {
totalMoney *= 0.8;
}
return totalMoney;
}
}
class Developer extends Employee {
private int experience;
public Developer(String name, int age) {
super(name, age);
price = 500;
}
@Override
public void work() {
System.out.println("工作内容是开发项目");
}
}
class Manager extends Employee {
private int managementExperience;
public Manager(String name, int age) {
super(name, age);
price = 800;
}
@Override
public void work() {
System.out.println("工作内容是项目管理");
}
}
public class Main {
public static void main(String[] args) {
Employee[] employees = new Employee[3];
Developer d1 = new Developer("小王", 23);
Developer d2 = new Developer("小李", 22);
Manager manager = new Manager("老张", 32);
employees[0] = d1;
employees[1] = d2;
employees[2] = manager;
Scanner input = new Scanner(System.in);
int days = input.nextInt();
double totalMoney = 0;
for (Employee employee : employees) {
totalMoney += employee.calcMoney(days);
}
System.out.println("开发:" + days + "天,总共需要支付:" + totalMoney + "元!");
}
}
输出结果为:
开发:90天,总共需要支付:126000.0元!
阅读全文