Int не может быть преобразован в логическое значение ?? преобразование кода из C в Java

1

У меня есть код, который я конвертирую в Java, я новичок в программировании, но я уже проделал некоторую работу над PL, хотя я не понимаю, почему я получаю эту ошибку

Исходный код C:

#include <stdio.h>
#include <conio.h>

int main () {
    int i, j, k;
    for (i=1; i<=59; i++) {
        k = 1;
        for (j=2; j<i; j++)
            if (i % (j*j) == 0) k = 0;
        if (k) printf ("%d\n", i);
    }
    printf("%d",i);
    getch();
}

Мой преобразованный код Java:

import java.util.*;
public class squarefree {

    public static void main(String[] args) {
        int i, j,k;
        for(i=1; i<60; i++){
            k=1;
            for(j=2; j<i; j++){
                if(i % (j*j) == 0) 
                    k=0;
                if(k) System.out.println(i);
            }
            System.out.println(i);
        }
    }
}

Может кто-нибудь объяснить? Спасибо, парни :)

  • 0
    Вместо этого добавлен мой комментарий как ответ с некоторыми дополнительными деталями.
Теги:
printing
int
boolean

5 ответов

2
Лучший ответ

2 способа исправить это:

1) Использовать if (k != 0), так как в java int является int а boolean является его собственный тип.

2) Сказав это, почему бы не изменить k на булевское значение? Вы используете его для логической проверки, и она изменяется только от 0 до 1, поэтому, если вы действительно используете логическое значение, это будет намного легче читать.

например:

boolean k = true;

// your code here
    // your ifstatement to change k
    k = false;

// print code
if (k) ...
2

В C вы можете сравнить int как boolean а любое ненулевое значение считается TRUE. В Java это не так. Эта

if(k) System.out.println(i);

должно быть что-то вроде

if(k != 0) System.out.println(i);
2

В отличие от C, int неявно преобразуется в boolean в Java.

Вам просто нужно написать if( k != 0 ) :)

2

Что вы не понимаете в сообщении об ошибке? if(k) не имеет никакого смысла в java-land. Вы хотели написать if(k != 0), чтобы проверить ненулевое значение?

1

В Java логическое значение является либо истинным, либо ложным. В C int имеет место для булевого типа с истинным значением, отличным от нуля, а false - равным нулю. Так что вы ищете:

public static void main(String[] args) {
    int i, j;
    boolean k;

    for(i=1; i<60; i++){
        k=true;
        for(j=2; j<i; j++){
            if(i % (j*j) == 0) 
                k=false;
        }
        if(k) System.out.println(i);
    }
    System.out.println(i);
}
  • 0
    Спасибо за все усилия, ребята, я запустил его, но он, похоже, не дает того же результата, что и моя C-программа по какой-то причине. Я постараюсь найти способ, хотя

Ещё вопросы

Сообщество Overcoder
Наверх
Меню