小编har*_*rym的帖子

如果我不关闭扫描仪怎么办?

我对Java的扫描仪有疑问。我正在编写井字游戏程序,每次玩家移动时都会调用此函数。

public void mossa(){
    int riga, colonna;
    int errore;
    Scanner input = new Scanner(System.in);
    if(player=='O')
        System.out.println("GIOCATORE O\n");
    else
        System.out.println("GIOCATORE X\n");

    do{
        errore = 0;
        System.out.println("Riga: ");
        riga = input.nextInt();

        System.out.println("Colonna: ");
        colonna = input.nextInt();

        if(board[riga][colonna]!=' '){
            errore=1;
            System.out.println("Hai scelto una casella gia occupata!\n");
        }
        if(riga>3 || colonna>3 || riga<0 ||colonna<0){
            errore=1;
            System.out.println("Hai scelto una casella che non esiste!\n");
        }

    }while(errore==1);

    //----->input.close();<------


    if(player == 'X')
        board[riga][colonna] = 'X';
    else
        board[riga][colonna] = 'O';

    togglePlayer();
}
Run Code Online (Sandbox Code Playgroud)

起初,我认为最好是在捕获到玩家的动作后关闭扫描仪,然后在再次调用该函数时再次打开它(请参见input.close()注释)。问题是,如果我关闭扫描仪,则会遇到运行时错误,指出扫描仪为空,而将nextInt()放入由hasNextInt()驱动的if中则无济于事。那么,不关闭输入扫描器是否是错误的(我只有资源泄漏的警告)?

先感谢您。

java

4
推荐指数
1
解决办法
620
查看次数

签署到std_logic_vector,切片结果

我需要取结果的绝对值,我只对最重要的位感兴趣.这就是我所做的:

data_ram_h <= std_logic_vector(abs(signed(resize(r4(calc_cnt - 2), data_ram_h'length) + r4(calc_cnt - 1) +
                    r4(calc_cnt) + r4(calc_cnt + 1) + r4(calc_cnt + 2) -
                    r2(calc_cnt - 2) - r2(calc_cnt - 1) - r2(calc_cnt) -
                    r2(calc_cnt + 1) - r2(calc_cnt + 2))))(11 downto 4);
Run Code Online (Sandbox Code Playgroud)

我尝试检查语法,我收到此错误:

type conversion std_logic_vector is not allowed as a prefix for an slice name.
Run Code Online (Sandbox Code Playgroud)

data_ram_h是正确维度的std_logic_vector,而abs函数返回一个signed,在转换为std_logic_vector时应该没有问题.我使用的库是使用ieee.numeric_std.all.

我哪里错了?在此先感谢c:

vhdl

4
推荐指数
1
解决办法
4126
查看次数

标签 统计

java ×1

vhdl ×1