2012-03-10 87 views
0

有人可以帮我把这段代码从C++转换成Java吗?我对C++没有任何认识。C++到Java代码翻译:numberToBarcode()

EDIT2: 感谢回复的家伙,我会花时间学习C++。我只需要一些帮助翻译的东西。这是我完成的翻译。我收到了所有numberToBarcode()方法名称的错误。我可否让你们检查这段代码,看看译文是否准确?

我的代码:

import java.util.Scanner; 

public class zipBar { 
public static int numberToBarcode(int arg0) 
{ 
    return arg0; 
} 

public static void main(String[] args) { 

    int z; 
    int num1, num2, num3, num4, num5, checkNum; 
    int tempNum; 
    int checkTotal; 
    String barcode = "|"; 

    System.out.println("Enter zip code: "); 
    Scanner zip = new Scanner(System.in); 
    z = zip.nextInt(); 

    if (z >= 10000 || z < 0) 
    { 
     System.out.println("Input Error: Input not a valid zip code"); 

    } 
    tempNum = z; 

    num5 = tempNum % 10; 
    tempNum = tempNum/10; 

    num4 = tempNum % 10; 
    tempNum = tempNum/10; 

    num3 = tempNum % 10; 
    tempNum = tempNum/10; 

    num2 = tempNum % 10; 
    tempNum = tempNum/10; 

    num1 = tempNum % 10; 
    tempNum = tempNum/10; 

    checkTotal = num1 + num2 + num3 + num4 + num5; 
    checkNum = (10-(checkTotal % 10)) % 10; 

    barcode += numberToBarcode(num1); 
    barcode += numberToBarcode(num2); 
    barcode += numberToBarcode(num3); 
    barcode += numberToBarcode(num4); 
    barcode += numberToBarcode(num5); 
    barcode += numberToBarcode(checkNum); 

    barcode += "|"; 

    System.out.println("Your zip code's barcode is: " + barcode); 

    //return 0; 

} 

public static void String numberToBarcode(int num){ 

String barcode = " "; 

int dig; 
int tempNum; 
int bcTotal = 0; 

tempNum = num; 

if (tempNum >= 10){ 
    dig = tempNum % 10; 
    tempNum /= 10; 

    barcode = numberToBarcode(tempNum); 
} 
else{ 
    dig = tempNum; 
} 
tempNum = dig; 

if (dig == 0) { 
    barcode += "||:::"; 
} 
else{ 
    if (tempNum/7 == 1 && bcTotal < 2){ 
     barcode += "|"; 
     tempNum -= 7; 
     bcTotal++; 
    } 
    else 
     barcode += ":"; 
    if (tempNum/4 == 1 && bcTotal < 2) {  
     barcode += "|"; 
     tempNum -= 4; 
     bcTotal++; 
    } else 
     barcode += ":"; 
    if (tempNum/2 == 1 && bcTotal < 2) {  
     barcode += "|"; 
     tempNum -= 2; 
     bcTotal++; 
    } else 
     barcode += ":"; 
    if (tempNum/1 == 1 && bcTotal < 2) { 
     barcode += "|"; 
     tempNum -= 1; 
     bcTotal++; 
    } else 
     barcode += ":"; 
    if (bcTotal < 2) { 
     barcode += "|"; 
     bcTotal++; 
    } else 
     barcode += ":"; 
} 
return barcode; 
} 

} 

C++代码:

string numberToBarcode(int); 

int main() { 

int zip; 
int num1, num2, num3, num4, num5, checkNum; 
int tempNum; 
int checkTotal; 
string barcode = "|"; 

cout << "Please enter a 5 digit zip code.\n" 
    << " --> "; 
cin >> zip; 


if (zip >= 100000 || zip < 0) { 
    cout << "Error: Not a zip code.\n"; 
    return 0; 
} 

tempNum = zip; 

num5 = tempNum % 10; 
tempNum = tempNum/10; 
num4 = tempNum % 10; 
tempNum = tempNum/10; 
num3 = tempNum % 10; 
tempNum = tempNum/10; 
num2 = tempNum % 10; 
tempNum = tempNum/10; 
num1 = tempNum % 10; 
tempNum = tempNum/10; 

checkTotal = num1 + num2 + num3 + num4 + num5; 
checkNum = (10-(checkTotal % 10))%10; 


barcode += numberToBarcode(num1); 
+0

我不能完全肯定这是值得用手工的Java转换到C++。你应该更好地学习C++(它需要与Java不同的思维方式)。 – 2012-03-10 17:16:41

+3

很难说出问题出在哪里。如果你甚至知道Java的基础知识,你应该能够提出更具体的问题,如果你不知道,那么从长远来看,没有答案会对你有所帮助。 – 2012-03-10 17:17:26

回答

2

C++允许你刚才提到的数据类型(int)没有一个名字下面,但仅在功能声明,你必须在实施中对其进行定义。否则,在一般语法中没有太大区别(尽管这并不意味着您可以直接在Java中使用C++函数实现)。

这里是一个Java翻译:

/** Java translation **/ 
String numberToBarcode(int arg0); 

barcode += numberToBarcode(num1); 
barcode += numberToBarcode(num2); 
barcode += numberToBarcode(num3); 
barcode += numberToBarcode(num4); 
barcode += numberToBarcode(num5); 

barcode += numberToBarcode(checkNum); 

而且,如果这是你以前遇到过这种情况是第一次,我一定会告诉你,有数以百计的C++代码库,你可能要在你的职业生涯中使用或翻译成Java。所以我建议你认真考虑学习一些C++。这是一笔相当不错的投资。

+0

可否请你看看我的代码,看看我的翻译是否正确。 – user12074577 2012-03-10 18:08:26

0

我可以看到的唯一区别是,你需要使用String,而不是string您可能想要使该方法静态为好。

public static String numberToBarcode(int n) { 
    return n as a String 
} 

所有其他行都是一样的。

0
interface BarcodGenerator { 
    String numberToBarcode(int no); 
} 

BarcodeGenerator bg =.... some instance .... 

String barcode = ""; 
barcode += bg.numberToBarcode(num1); 
barcode += bg.numberToBarcode(num2); 
barcode += bg.numberToBarcode(num3); 
barcode += bg.numberToBarcode(num4); 
barcode += bg.numberToBarcode(num5); 
barcode += bg.numberToBarcode(checkNum); 
0
String numberToBarcode(int x){ 
    return ""+x; 
} 

String makeBarCode() { 
    String barcode=""; 
    barcode += numberToBarcode(1); 
    barcode += numberToBarcode(2); 
    barcode += numberToBarcode(3); 
    barcode += numberToBarcode(4); 
    barcode += numberToBarcode(5); 
    return barcode; 
}