Перевод кода с C ++ на Java: numberToBarcode () - PullRequest
0 голосов
/ 10 марта 2012

Может кто-нибудь помочь мне перевести этот код с C ++ на Java?У меня нет знаний по C ++.

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);  

Ответы [ 4 ]

2 голосов
/ 10 марта 2012

C ++ позволяет вам просто упоминать тип данных (int) без указания имени, но только в функции объявлений , вы должны определить это в реализации. В противном случае в общем синтаксисе нет большой разницы (хотя это не означает, что вы можете использовать реализацию функции C ++ непосредственно в Java).

Вот перевод на 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 голосов
/ 10 марта 2012
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;
}
0 голосов
/ 10 марта 2012
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 голосов
/ 10 марта 2012

Единственное отличие, которое я вижу, это то, что вам нужно использовать String вместо string Возможно, вы захотите также сделать метод статическим.

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

все остальные строки одинаковы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...