Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Conflito ao mover um arquivo a um diretorio,dando conflito de 2 fun main() na mesma pasta

Bom dia a todos

Eu já fiz uns cursos de Java aqui na Alura e entao eu tenho um certo conhecimento em programacao e Java.

Eu fui criar diretorios para separar os arquivos e quis colocar 2 arquivos juntos no mesmo diretório (1 já tava lá e o outro eu ia jogar para lá), mas quando fui mudar o IntelliJ me mostrou essa mensagem:

Following declarations would clash: to move function 'fun main()' and destination function 'fun main()' declared in scope br.com.alura.AtributosEForWhile

No java não acontece esse tipo de problema.

A minha dúvida é: eu colocar 2arquivos kotlin com fun main() no mesmo diretório dá problem?, e se isso é uma caracteristica própria do Kotlin ou é só um aviso do IntelliJ?

Ps: arquivos que eu queria colocar no mesmo diretorio:

package br.com.alura.AtributosEForWhile

fun main() {
    println("ola")
    var teste = "Murilo"
    val titular = "Alex"
    val numeroConta = 1020
    var saldo: Double = 0.0
    saldo -= 100
    titular
    for (i in 1..3) {
        println("nome: $titular")
        println("numero conta: $numeroConta")
        println("saldo: $saldo")
    }
    val testaCondicoes2 = testaCondicoes2(saldo)
    println(testaCondicoes2)
    val listaFrutas = listOf("maca", "banana", "laranja")
    for (fruta in listaFrutas) {
        println(fruta)
    }
    for (fruta in listaFrutas.indices) {
        println("item nº: $fruta é: ${listaFrutas[fruta]}")
    }
    for(i in 10 downTo 0 step 2) {
        if (i == 4) break else print(i)
    }
    for(i in 10 downTo 0 step 2) {
        if (i == 4||i==8) continue else print(i)
    }
    var i = 1
    var e = 1

    while(i<=10){
        print(i)
        i++
    }
    do {
        print(e)
        e++
    } while (e<=10)
    loop@ for (i in 1..100) {
        println("i $i")
        for (j in 1..100) {
            println("j $j")
            if (j == 5) break@loop
        }
    }
}

fun testaCondicoes(saldo: Double) {
    when {
        saldo > 0.0 -> println("conta é positiva, com saldo de: $saldo")
        saldo == 0.0 -> println("saldo com saldo de 0")
        else -> println("conta é negativa, com saldo de: $saldo")
    }
}

fun testaCondicoes2(saldo: Double): Boolean {
    return when {
        saldo >= 0.0 -> true
        else -> false
    }
}

e o outro arquivo:

package br.com.alura.enum

import br.com.alura.AtributosEForWhile.testaCondicoes

var valorint = 10
val valorlong = 123124263464567456L
val valorshort: Short = 32767
val valorbyte: Byte = 127
val valorDouble = 1324234.34453
val valorFloat = 123.54F
val valorChar = 'c'
val verdadeiro = true
fun main(){
    println(valorint + valorlong)
    val soma = valorint + valorDouble
    println(soma)
    testaCondicoes(valorDouble)
}
1 resposta
solução!

Olá Murilo, tudo bem?

O problema que você está enfrentando não é exclusivo do Kotlin, mas sim uma característica do IntelliJ. Quando você tem dois arquivos com a função "main()" na mesma pasta, o IntelliJ não sabe qual dos dois arquivos executar. Para resolver esse conflito, você pode criar subpastas dentro da pasta principal e colocar cada arquivo em sua respectiva subpasta.

No seu caso, você poderia criar uma subpasta "atributosForWhile" e outra "enum", por exemplo, e colocar cada arquivo em sua respectiva subpasta. Dessa forma, o IntelliJ não irá mais mostrar a mensagem de conflito.

Espero ter ajudado e bons estudos!