簡體   English   中英

'。類。' java中的錯誤

[英]'.class.' error in java

我嘗試了一個在C ++上運行良好的問題; 這是C ++實現。

#include<iostream>
#include<string>
#include<string.h>
using namespace std;
int main()
{
int t;
char str[1000100];
char num[1010];
cin>>t;
while(t--)
{
    cin>>num;
    cin>>str;
    int a=strlen(str);
    int b=strlen(num);
    int x=0;
    int flag=0;
    int m=0;
    for(int j=0;j<2*b;j++)
    {
        if(m==b)
        {
        flag=1;
        m--;
        }
        if(m==0)
        {
        flag=0;

        }



        num[j]=num[m];
        if(flag==0)
        m++;
        if(flag==1)
        m--;
    }
    for(int i=0;i<a;i++)
    {
        if(x==2*b)
            x=0;
        if((str[i]-(num[x]-'0'))<97)
        str[i]=char(str[i]-(num[x]-'0')+26);
         else
         str[i]=char(str[i]-(num[x]-'0'));
        x++;



     }
     cout<<str<<endl;
    //cout<<num;
}
return 0;
  }

這是我的Java實現。

import java.util.Scanner;
class sngmsg
{
public static void main(String[] s)
{
    Scanner sc=new Scanner(System.in);
    int t;
    /*char[] str;
    str = new char[1000100];
    char[] num=new char[1010];*/
    String str;
    String num;
    char[] num1=new char[1010];
    char[] str1=new char[1000100];
    t=sc.nextInt();
    for(int l=0;l<t;l++)
    {

        num=sc.next();
        str=sc.nextLine();
        int a=str.length();
        for(int c=0;c<a;c++)
            str1[c]=str.charAt(c);
    int b=num.length();
    int x=0;
    int flag=0;
    int m=0;
    for(int j=0;j<2*b;j++)
    {
        if(m==b)
        {
        flag=1;
        m--;
        }
        if(m==0)
        {
        flag=0;

        }



        num1[j]=num.charAt(m);
        if(flag==0)
        m++;
        if(flag==1)
        m--;
    }
    for(int i=0;i<a;i++)
    {
        if(x==2*b)
        x=0;
        if(int(str1[i])-(num1[x])<97)
        str1[i]=char(int(str1[i])-num1[x])+26);
        else
        str1[i]=char(str1[i]-(num1[x]-'0'));
        x++;



    }

    }
}
}

在該部分

if(int(str1[i])-(num1[x])<97)
str1[i]=char(int(str1[i])-num1[x])+26);
else
str1[i]=char(str1[i]-(num1[x]-'0'));
x++;

它給出了一個錯誤:

unexpected type
required:value
found: class
'.class' expected
; expected

以及這些行中的類似錯誤。 有幫助嗎?

它應該是

if((int)(str1[i])-(int)(num1[x])<97)

cast運算符應該對它們有(),如(int)1和(char)'a'而不是int(1)或char('a')

intchar不是函數,而是原語。

str1[i]=char(int(str1[i])-num1[x])+26)

您正在嘗試將int用作函數。 你對它有什么期望?

通常,您將使用主要方法進行公開課。 您似乎正在編譯您的類,但您無法執行它。 這樣做可以解決您的問題:

1 - 使用您的類名創建一個文件,例如“MyClass.java”

2 - 您的班級聲明需要公開:

public class MyClass {
    // your code here
}

3 - 將main方法放在創建的類中:

public class MyClass {
    public static void main( String[] args ) {
        // your code here
    }
}

4 - 編譯它(javac MyClass.java)

5 - 執行它:java MyClass

你的代碼似乎也有一些問題。 如果要轉換某些基本類型或引用類型,則需要將所需類型放在括號內。 就像是:

// a char
char c = 'a';

// casting that char to an integer
int i = (int) c;

讓我知道它是否有效。

您在文件的開頭缺少包名稱。 這堂課也應該是公開的。

package something.somethingelse;
import java.util.Scanner;
public class sngmsg{

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM