当前位置: 首页 > 知识库问答 >
问题:

从不同方法寻址变量的问题

庞意智
2023-03-14
import java.util.Scanner;
public class SalaryCountingWithMethods {
    public static void main (String [] args) {
        double hours, salaryPerHour, taxPercent, taxlessSalary, taxPart;
 
        hours =  askHours();
        salaryPerHour = askSalaryPerHour();
        taxPercent = askTaxPercent();
        
        taxlessSalary = countTaxlessSalary(hours, salaryPerHour);
 
        taxPart = taxlessSalary * taxPercent /100;
 
        System.out.println("\nSalary before taxes: " + taxlessSalary);
        System.out.println("Tax part of the salary: " + taxPart);
        System.out.println("Salary after taxes: " + (taxlessSalary-taxPart));        
    }
static Scanner reader = new Scanner(System.in);
    private static int askHours(){
        System.out.print("Type in the number of work hours: ");
        int hours = reader.nextInt();
        return hours;
        }
    
    private static int askSalaryPerHour(){
        System.out.print("Type in salary per hour: ");
        int perHour = reader.nextInt();
        return perHour;
        }
        
    public static int askTaxPercent(){
        
        System.out.print("Type in the number of work hours: ");
        int taxPercent = reader.nextInt();
        return taxPercent;
        }
private static double countTaxlessSalary(double hours, double salaryPerHour){
    double taxPercent = 0;
    double fullSalary = (float)hours * (float)salaryPerHour;
    double taxPart = (float)fullSalary * (float)taxPercent /100;
    double taxLess = (float)fullSalary - (float)taxPart;
    return taxLess;
    }
}
Your program returned a none-zero value. You should return 0 from the main() function.
Exception in thread "main" java.util.InputMismatchException at java.base/java.util.Scanner.throwFor(Scanner.java:939) at java.base/java.util.Scanner.next(Scanner.java:1594) at java.base/java.util.Scanner.nextInt(Scanner.java:2258) at java.base/java.util.Scanner.nextInt(Scanner.java:2212) at SalaryCountingWithMethods.askHours(SalaryCountingWithMethods.java:29) at SalaryCountingWithMethods.main(SalaryCountingWithMethods.java:14)

共有1个答案

茹正祥
2023-03-14

下面的SalaryCountingWithMethods类要求三个浮点数
问题可能是您正在处理浮点数,但您定义的方法接受Integer输入。当您给出double而不是integer时,这将导致java.util.InputMismatchException错误。

private static int askHours(){
   System.out.print("Type in the number of work hours: ");
   int hours = reader.nextInt();
   return hours;
}

您应该接受double作为输入,而不是整数。

private static double askHours(){
   System.out.print("Type in the number of work hours: ");
   double hours = reader.nextDouble();
   return hours;
}

对于其他两个方法AskSalaryPerHour()AskTaxPercent()也应该这样做。

 类似资料:
  • 3.6 基址加变址寻址方式 操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)和一个变址寄存器(SI、DI)的内容之和。其有效地址的计算公式如右式所示。 在不使用段超越前缀的情况下,规定:如果有效地址中含有BP,则缺省的段寄存器为SS;否则,缺省的段寄存器为DS。 例3.4 假设指令:MOVBX, [BX+SI],在执行时,(DS)=1000H,(BX)=2100H,(SI)=0011H,

  • 3.7 相对基址加变址寻址方式 操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)的值、一个变址寄存器(SI、DI)的值和指令中的8位/16位偏移量之和。其有效地址的计算公式如右式所示。 在不使用段超越前缀的情况下,规定:如果有效地址中含有BP,则其缺省的段寄存器为SS;否则,其缺省的段寄存器为DS。 指令中给出的8位/16位偏移量用补码表示。在计算有效地址时,如果偏移量是8位,则进行符号

  • 我有另一个名为ProgramWindow的类,在这个类中,我将图像编辑器的所有不同JPanels添加到一个主JFrame,我认为这可能是我的问题所在,因为BufferedImage是空的。以下是ProgramWindow的代码: 我已经得出结论,ProgramWindow中的ButtonPanel传递了一个空参数,但我不知道为什么会这样。我在ImagePanel类中有一个名为getImg的方法,我

  • 周五晚上,绝影和往常一样回家。这是他和他们这些大学生唯一不同的地方:他家和大学在一个城市,每周五就可以回家。这样做的好处有两点:一、每周只有五天要用生活费;二、可以不用自己洗衣服,冬天的衣服,直接穿回家换就好了,夏天的,打包回家换。 这周过来,他和平时有点不一样,土匪见他提了两本书,一本《鲁迅杂文全集》,一本《PC汇编语言程序设计》。 土匪对这两本书没都没啥兴趣,他喜欢看武打小说,是“武打”小说,

  • 4. 寻址方式 通过上一节的例子我们了解到,访问内存时在指令中可以用多种方式表示内存地址,比如可以用数组基地址、元素长度和下标三个量来表示,增加了寻址的灵活性。本节介绍x86常用的几种寻址方式(Addressing Mode)。内存寻址在指令中可以表示成如下的通用格式: ADDRESS_OR_OFFSET(%BASE_OR_OFFSET,%INDEX,MULTIPLIER) 它所表示的地址可以这样

  • 在 Go 语言中通过首字母大小写来控制变量、函数、方法、类型的公私有 如果首字母小写,那么代表私有,仅在当前包中可以使用 如果首字母大写,那么代表共有,其它包中也可以使用 package demo import "fmt" var num1 int = 123 // 当前包可用 var Num1 int = 123 // 其它包也可用 type person struct {