为什么在这个Java程序的for循环定义中会出现语法错误?
我正在编写下面的代码来创建一个为什么在这个Java程序的for循环定义中会出现语法错误?,java,for-loop,arraylist,Java,For Loop,Arraylist,我正在编写下面的代码来创建一个ArrayList,将其洗牌,并获取前三个元素,但由于某种原因,在启动for循环时,我在标记上得到了一个语法错误“ import java.util.ArrayList; 公开课卡片洗牌{ ArrayList卡=新的ArrayList() 对于(int i=0;i
ArrayList
,将其洗牌,并获取前三个元素,但由于某种原因,在启动for循环时,我在标记上得到了一个语法错误“
import java.util.ArrayList;
公开课卡片洗牌{
ArrayList卡=新的ArrayList()
对于(int i=0;i<52;i++){
卡片.添加(字符串.值(i+1));
java.util.Collections.shuffle(卡片);
}
公共静态void main(字符串参数[]){
cardsShuffle s=新卡Shuffle();
System.out.println(s.cards.get(0));
System.out.println(s.cards.get(1));
System.out.println(s.cards.get(2));
}
您在“ArrayList cards=new ArrayList()”行后缺少分号。只需输入分号,您的代码将不会出错:)您已在函数外部编写for循环。除减速外的所有内容都应在函数或块内部编写
import java.util.ArrayList;
public class CardsShuffle
{
public static ArrayList<String> cards = new ArrayList<>();
public static void main(String args[])
{
System.out.println(cards.get(0));
System.out.println(cards.get(1));
System.out.println(cards.get(2));
for (int i = 0; i < 52; i++)
{
cards.add(String.valueOf(i+1));
java.util.Collections.shuffle(cards);
}
}
}
import java.util.ArrayList;
公开课卡片洗牌
{
公共静态ArrayList卡=新建ArrayList();
公共静态void main(字符串参数[])
{
System.out.println(cards.get(0));
System.out.println(cards.get(1));
System.out.println(cards.get(2));
对于(int i=0;i<52;i++)
{
卡片.添加(字符串.值(i+1));
java.util.Collections.shuffle(卡片);
}
}
}
代码应该是这样的……总是在函数内部执行一些东西。试试这个
import java.util.ArrayList;
public class cardsShuffle {
public static void main(String args[]) {
ArrayList<String> cards = new ArrayList<>();
for(int i = 0; i<52;i++)
{
cards.add(String.valueOf(i + 1));
java.util.Collections.shuffle(cards);
}
cardsShuffle s = new cardsShuffle();
System.out.println(cards.get(0));
System.out.println(cards.get(1));
System.out.println(cards.get(2));
}
}
import java.util.ArrayList;
公开课卡片洗牌{
公共静态void main(字符串参数[]){
ArrayList cards=新的ArrayList();
对于(int i=0;i您不能只将代码放入类中。它需要位于方法、构造函数或初始值设定项块或字段初始化的RHS内部(对于循环不可能)
此外,您不需要在添加每张卡后进行洗牌。因为集合.shuffle
会产生一个随机排列,在循环后使用一次就足够了
public class cardsShuffle {
// field declaration
ArrayList<String> cards;
// constructor
public cardsShuffle() {
cards = new ArrayList<>();
for (int i = 0; i < 52; i++){
cards.add(String.valueOf(i+1));
}
java.util.Collections.shuffle(cards);
}
public static void main(String args[]) {
cardsShuffle s = new cardsShuffle();
System.out.println(s.cards.get(0));
System.out.println(s.cards.get(1));
System.out.println(s.cards.get(2));
}
}
public class cardshuffle{
//字段声明
ArrayList卡片;
//建造师
公共卡洗牌(){
cards=新的ArrayList();
对于(int i=0;i<52;i++){
卡片.添加(字符串.值(i+1));
}
java.util.Collections.shuffle(卡片);
}
公共静态void main(字符串参数[]){
cardsShuffle s=新卡Shuffle();
System.out.println(s.cards.get(0));
System.out.println(s.cards.get(1));
System.out.println(s.cards.get(2));
}
}
1)新建ArrayList()后缺少分号。
2)for循环不在任何方法内。您可以创建一个静态方法,其中包含for循环,并通过ArrayList cards=myStaticMethod()使用该方法初始化卡片列表即使在前两个之后,也会出现错误,因为静态方法无法引用实例变量。卡片列表必须是静态的。我将循环放在主方法中,然后我必须从prin.outln中删除s。现在它可以工作了。错!类主体中仍然有for循环。您无法访问非static
字段,而不指定包含类的实例。
public class cardsShuffle {
// field declaration
ArrayList<String> cards;
// constructor
public cardsShuffle() {
cards = new ArrayList<>();
for (int i = 0; i < 52; i++){
cards.add(String.valueOf(i+1));
}
java.util.Collections.shuffle(cards);
}
public static void main(String args[]) {
cardsShuffle s = new cardsShuffle();
System.out.println(s.cards.get(0));
System.out.println(s.cards.get(1));
System.out.println(s.cards.get(2));
}
}