2013-11-26 37 views
0

我刚刚开始在大学课程中学习Java。如果/那么陈述还没有被覆盖,但我想我可以自己尝试。我结束了一些我认为已修复的语法错误,但现在似乎在尝试使用整数添加字符串时存在操作数错误。如何在打印语句中组合字符串和整数?

我班上给出的问题是要求用户提供他们的姓名,小时工资率和工作时间。我知道教授很快会要求我们询问用户是否加班。如果他们这样做,询问加班后多少小时。然后计算总支付额,加班费是正常小时费率的1.5倍。

但是,我在最后3个打印语句中得到一个错误,我认为这是因为我试图组合一个字符串和一个整数。我该如何解决?

package javaapplication2; 

import java.util.Scanner; 

public class JavaApplication2 { 

    public static void main(String [] args) { 
     Scanner input = new Scanner(System.in); 
     String name; 
     double payRate; 
     int hours; 
     Boolean OTyn; 
     int OTy; 

     System.out.println("What is your name?"); 
     name = input.nextLine(); 
     System.out.println("What is your hourly rate of pay?"); 
     payRate = input.nextDouble(); 
     System.out.println("How any hours have you worked?"); 
     hours = input.nextInt(); 
     System.out.println("Your boss pays overtime. Answer with true or false."); 
     OTyn = input.nextBoolean(); 
     if (OTyn == true) 
      System.out.println("After how many hours are you paid for overtime?"); 
      OTy = input.nextInt(); 
      if (hours > OTy) 
       System.out.println("Your weekly pay is " + ((40 * payRate) + (hours - OTy)(payRate * 1.5))); 
      else 
       System.out.println("Your weekly pay is " + payRate * hours); 
     else 
      System.out.println("Your weekly pay is " + payRate * hours); 
    } 
} 
+3

您似乎在if/else块中缺少大括号。强烈建议你阅读一些基本的Java教程 – Taylor

+0

你会得到什么错误?你能给出错误stacktrace? – Christian

+0

“但是,我在最后3个打印语句中出现错误”。那错误信息是什么意思? – Thilo

回答

0

我认为你缺少的IFS

if (OTyn == true) { //here 
    System.out.println("After how many hours are you paid for overtime?"); 
    OTy = input.nextInt(); 
    if (hours > OTy){ // Here doesn need because it is just one line after the if 
     System.out.println("Your weekly pay is " + 
       ((40*payRate) + (hours - OTy)(payRate*1.5))); 
    // (hours - OTy)(payRate*1.5) you are missing an operator between this expressions 

    }else{ 
     System.out.println("Your weekly pay is " + payRate*hours); 
    } 
} else { //here 
    System.out.println("Your weekly pay is " + payRate*hours); 
} //and here 

加上之后,它只有一个行IF语句的{}你不需要{},因为这:

if (something) 
    System.out.println("Something is true"); 
else 
    System.out.println("Something is false"); 
0

您错过了一组大括号和星号,如下所示。

if (OTyn == true) { // <-- This brace to open. 
    System.out 
     .println("After how many hours are you paid for overtime?"); 
    OTy = input.nextInt(); 
    if (hours > OTy) 
    System.out.println("Your weekly pay is " 
     + ((40 * payRate) + (hours - OTy) 
      * (payRate * 1.5))); // <-- at the start of this line. 
    else 
    System.out.println("Your weekly pay is " 
     + payRate * hours); 
} else // <-- That brace to close. 
    System.out.println("Your weekly pay is " 
     + payRate * hours); 
0
import java.util.Scanner; 

public class JavaApplication2 
{ 
public static void main(String[] args) { 
Scanner input = new Scanner(System.in); 
String name; 
double payRate; 
int hours; 
Boolean OTyn; 
int OTy; 

System.out.println("What is your name?"); 
name = input.nextLine(); 
System.out.println("What is your hourly rate of pay?"); 
payRate = input.nextDouble(); 
System.out.println("How any hours have you worked?"); 
hours = input.nextInt(); 
System.out.println("Your boss pays overtime. Answer with true or false."); 
OTyn = input.nextBoolean(); 
if (OTyn == true){ 
    System.out.println("After how many hours are you paid for overtime?"); 
    OTy = input.nextInt(); 
    if (hours > OTy){ 
     System.out.println("Your weekly pay is " + ((40*payRate) + (hours - OTy)*(payRate*1.5))); 
    } 
    else{ 
     System.out.println("Your weekly pay is " + payRate*hours); 
    } 
} 
else { 
    System.out.println("Your weekly pay is " + payRate*hours); 
} 
}  
} 

试试这个,不仅是你缺少的大括号,你也有一个问题,这条线

System.out.println("Your weekly pay is " + ((40*payRate) + (hours - OTy)(payRate*1.5))); 

你需要(hours - OTy)(payRate*1.5)之间的*导致(hours - OTy)*(payRate*1.5)否则串级联不起作用

相关问题